{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 任务介绍"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们的案例将围绕一个时间序列预测任务展开。该任务是Kaggle上的一个比赛，M5 Forecasting - Accuarcy（https://www.kaggle.com/c/m5-forecasting-accuracy/notebooks ）。M5的赛题目标是预测沃尔玛各种商品在未来28天的销量。本案例使用前1913天的数据作为训练数据，来预测1914天到1941天的销量。并且，我们只对最细粒度的30490条序列进行预测。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据导入与特征工程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先我们先安装一下要用到的依赖库\n",
    "\n",
    "我们先安装一raphviz用于后续图像的生成\n",
    "\n",
    "如果你使用Ubuntu/Debian等Linux系统，请通过以下命令安装graphviz(如果是Fedora/CentOS等，请将apt换成yum或你系统上的包管理器)\n",
    "```bash\n",
    " sudo apt install graphviz\n",
    "```\n",
    "\n",
    "如果你使用的是windows或mac系统\n",
    "请参考 http://graphviz.org/download/ 所提供的安装方式进行安装"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: matplotlib in /anaconda/envs/lgbm/lib/python3.9/site-packages (3.4.2)\n",
      "Requirement already satisfied: lightgbm==3.1.1 in /anaconda/envs/lgbm/lib/python3.9/site-packages (3.1.1)\n",
      "Requirement already satisfied: pandas==1.1.5 in /anaconda/envs/lgbm/lib/python3.9/site-packages (1.1.5)\n",
      "Requirement already satisfied: numpy==1.19.5 in /anaconda/envs/lgbm/lib/python3.9/site-packages (1.19.5)\n",
      "Requirement already satisfied: graphviz==0.16 in /anaconda/envs/lgbm/lib/python3.9/site-packages (0.16)\n",
      "Requirement already satisfied: scikit-learn!=0.22.0 in /anaconda/envs/lgbm/lib/python3.9/site-packages (from lightgbm==3.1.1) (0.24.2)\n",
      "Requirement already satisfied: wheel in /anaconda/envs/lgbm/lib/python3.9/site-packages (from lightgbm==3.1.1) (0.36.2)\n",
      "Requirement already satisfied: scipy in /anaconda/envs/lgbm/lib/python3.9/site-packages (from lightgbm==3.1.1) (1.6.3)\n",
      "Requirement already satisfied: pytz>=2017.2 in /anaconda/envs/lgbm/lib/python3.9/site-packages (from pandas==1.1.5) (2021.1)\n",
      "Requirement already satisfied: python-dateutil>=2.7.3 in /anaconda/envs/lgbm/lib/python3.9/site-packages (from pandas==1.1.5) (2.8.1)\n",
      "Requirement already satisfied: six>=1.5 in /anaconda/envs/lgbm/lib/python3.9/site-packages (from python-dateutil>=2.7.3->pandas==1.1.5) (1.16.0)\n",
      "Requirement already satisfied: threadpoolctl>=2.0.0 in /anaconda/envs/lgbm/lib/python3.9/site-packages (from scikit-learn!=0.22.0->lightgbm==3.1.1) (2.1.0)\n",
      "Requirement already satisfied: joblib>=0.11 in /anaconda/envs/lgbm/lib/python3.9/site-packages (from scikit-learn!=0.22.0->lightgbm==3.1.1) (1.0.1)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in /anaconda/envs/lgbm/lib/python3.9/site-packages (from matplotlib) (1.3.1)\n",
      "Requirement already satisfied: cycler>=0.10 in /anaconda/envs/lgbm/lib/python3.9/site-packages (from matplotlib) (0.10.0)\n",
      "Requirement already satisfied: pillow>=6.2.0 in /anaconda/envs/lgbm/lib/python3.9/site-packages (from matplotlib) (8.2.0)\n",
      "Requirement already satisfied: pyparsing>=2.2.1 in /anaconda/envs/lgbm/lib/python3.9/site-packages (from matplotlib) (2.4.7)\n"
     ]
    }
   ],
   "source": [
    "!pip install matplotlib lightgbm==3.1.1 pandas==1.1.5 numpy==1.19.5 graphviz==0.16"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在以上安装过程结束后，请重启本内核或Notebook\n",
    "\n",
    "然后通过运行以下单元导入一些后续要用到的python包。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "plt.rcParams[\"figure.figsize\"] = (20,5) # 设置pyplot绘制的图片大小"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据获取并处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于kaggle对数据集的使用规定限制了数据的分发，需要自行通过kaagle注册比赛下载数据集并放于data文件中\n",
    "\n",
    "数据集下载地址：https://www.kaggle.com/c/m5-forecasting-accuracy/data\n",
    "\n",
    "\n",
    "将data文件夹中的m5-forecasting-accuracy.zip解压，得到一些csv文件。\n",
    "历史销量数据存储在sales_train_evaluation.csv和sales_train_validation.csv这两个文件中。其中sales_train_validation.csv包含了第1天(d_1)到1913天(d_1913)的销量信息。sales_train_evaluation.csv包含了第1天(d_1)到第1941天(d_1941)的销量信息，比sales_train_validation.csv多出了28天。如上文提到的，我们将sales_train_validation.csv作为训练数据。我们先将数据用pandas读入，做一个简单的观察。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>dept_id</th>\n",
       "      <th>cat_id</th>\n",
       "      <th>store_id</th>\n",
       "      <th>state_id</th>\n",
       "      <th>d_1</th>\n",
       "      <th>d_2</th>\n",
       "      <th>d_3</th>\n",
       "      <th>d_4</th>\n",
       "      <th>...</th>\n",
       "      <th>d_1904</th>\n",
       "      <th>d_1905</th>\n",
       "      <th>d_1906</th>\n",
       "      <th>d_1907</th>\n",
       "      <th>d_1908</th>\n",
       "      <th>d_1909</th>\n",
       "      <th>d_1910</th>\n",
       "      <th>d_1911</th>\n",
       "      <th>d_1912</th>\n",
       "      <th>d_1913</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>HOBBIES_1_001_CA_1_validation</td>\n",
       "      <td>HOBBIES_1_001</td>\n",
       "      <td>HOBBIES_1</td>\n",
       "      <td>HOBBIES</td>\n",
       "      <td>CA_1</td>\n",
       "      <td>CA</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>HOBBIES_1_002_CA_1_validation</td>\n",
       "      <td>HOBBIES_1_002</td>\n",
       "      <td>HOBBIES_1</td>\n",
       "      <td>HOBBIES</td>\n",
       "      <td>CA_1</td>\n",
       "      <td>CA</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>HOBBIES_1_003_CA_1_validation</td>\n",
       "      <td>HOBBIES_1_003</td>\n",
       "      <td>HOBBIES_1</td>\n",
       "      <td>HOBBIES</td>\n",
       "      <td>CA_1</td>\n",
       "      <td>CA</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>HOBBIES_1_004_CA_1_validation</td>\n",
       "      <td>HOBBIES_1_004</td>\n",
       "      <td>HOBBIES_1</td>\n",
       "      <td>HOBBIES</td>\n",
       "      <td>CA_1</td>\n",
       "      <td>CA</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>HOBBIES_1_005_CA_1_validation</td>\n",
       "      <td>HOBBIES_1_005</td>\n",
       "      <td>HOBBIES_1</td>\n",
       "      <td>HOBBIES</td>\n",
       "      <td>CA_1</td>\n",
       "      <td>CA</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>FOODS_3_823_WI_3_validation</td>\n",
       "      <td>FOODS_3_823</td>\n",
       "      <td>FOODS_3</td>\n",
       "      <td>FOODS</td>\n",
       "      <td>WI_3</td>\n",
       "      <td>WI</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>FOODS_3_824_WI_3_validation</td>\n",
       "      <td>FOODS_3_824</td>\n",
       "      <td>FOODS_3</td>\n",
       "      <td>FOODS</td>\n",
       "      <td>WI_3</td>\n",
       "      <td>WI</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>FOODS_3_825_WI_3_validation</td>\n",
       "      <td>FOODS_3_825</td>\n",
       "      <td>FOODS_3</td>\n",
       "      <td>FOODS</td>\n",
       "      <td>WI_3</td>\n",
       "      <td>WI</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>FOODS_3_826_WI_3_validation</td>\n",
       "      <td>FOODS_3_826</td>\n",
       "      <td>FOODS_3</td>\n",
       "      <td>FOODS</td>\n",
       "      <td>WI_3</td>\n",
       "      <td>WI</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>FOODS_3_827_WI_3_validation</td>\n",
       "      <td>FOODS_3_827</td>\n",
       "      <td>FOODS_3</td>\n",
       "      <td>FOODS</td>\n",
       "      <td>WI_3</td>\n",
       "      <td>WI</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 1919 columns</p>\n",
       ""
      ],
      "text/plain": [
       "                                  id        item_id    dept_id   cat_id  \\\n",
       "0      HOBBIES_1_001_CA_1_validation  HOBBIES_1_001  HOBBIES_1  HOBBIES   \n",
       "1      HOBBIES_1_002_CA_1_validation  HOBBIES_1_002  HOBBIES_1  HOBBIES   \n",
       "2      HOBBIES_1_003_CA_1_validation  HOBBIES_1_003  HOBBIES_1  HOBBIES   \n",
       "3      HOBBIES_1_004_CA_1_validation  HOBBIES_1_004  HOBBIES_1  HOBBIES   \n",
       "4      HOBBIES_1_005_CA_1_validation  HOBBIES_1_005  HOBBIES_1  HOBBIES   \n",
       "...                              ...            ...        ...      ...   \n",
       "30485    FOODS_3_823_WI_3_validation    FOODS_3_823    FOODS_3    FOODS   \n",
       "30486    FOODS_3_824_WI_3_validation    FOODS_3_824    FOODS_3    FOODS   \n",
       "30487    FOODS_3_825_WI_3_validation    FOODS_3_825    FOODS_3    FOODS   \n",
       "30488    FOODS_3_826_WI_3_validation    FOODS_3_826    FOODS_3    FOODS   \n",
       "30489    FOODS_3_827_WI_3_validation    FOODS_3_827    FOODS_3    FOODS   \n",
       "\n",
       "      store_id state_id  d_1  d_2  d_3  d_4  ...  d_1904  d_1905  d_1906  \\\n",
       "0         CA_1       CA    0    0    0    0  ...       1       3       0   \n",
       "1         CA_1       CA    0    0    0    0  ...       0       0       0   \n",
       "2         CA_1       CA    0    0    0    0  ...       2       1       2   \n",
       "3         CA_1       CA    0    0    0    0  ...       1       0       5   \n",
       "4         CA_1       CA    0    0    0    0  ...       2       1       1   \n",
       "...        ...      ...  ...  ...  ...  ...  ...     ...     ...     ...   \n",
       "30485     WI_3       WI    0    0    2    2  ...       2       0       0   \n",
       "30486     WI_3       WI    0    0    0    0  ...       0       0       0   \n",
       "30487     WI_3       WI    0    6    0    2  ...       2       1       0   \n",
       "30488     WI_3       WI    0    0    0    0  ...       0       0       1   \n",
       "30489     WI_3       WI    0    0    0    0  ...       0       0       0   \n",
       "\n",
       "       d_1907  d_1908  d_1909  d_1910  d_1911  d_1912  d_1913  \n",
       "0           1       1       1       3       0       1       1  \n",
       "1           0       0       1       0       0       0       0  \n",
       "2           1       1       1       0       1       1       1  \n",
       "3           4       1       0       1       3       7       2  \n",
       "4           0       1       1       2       2       2       4  \n",
       "...       ...     ...     ...     ...     ...     ...     ...  \n",
       "30485       0       0       0       1       0       0       1  \n",
       "30486       0       0       0       0       0       1       0  \n",
       "30487       2       0       1       0       0       1       0  \n",
       "30488       0       0       1       0       3       1       3  \n",
       "30489       0       0       0       0       0       0       0  \n",
       "\n",
       "[30490 rows x 1919 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sales = pd.read_csv(\"../data/sales_train_validation.csv\")\n",
    "sales"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到最细粒度的30490条数据。其中id是item_id、dept_id、cat_id、store_id和state_id的整合。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来我们再来看日历信息。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>wm_yr_wk</th>\n",
       "      <th>weekday</th>\n",
       "      <th>wday</th>\n",
       "      <th>month</th>\n",
       "      <th>year</th>\n",
       "      <th>d</th>\n",
       "      <th>event_name_1</th>\n",
       "      <th>event_type_1</th>\n",
       "      <th>event_name_2</th>\n",
       "      <th>event_type_2</th>\n",
       "      <th>snap_CA</th>\n",
       "      <th>snap_TX</th>\n",
       "      <th>snap_WI</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2011-01-29</td>\n",
       "      <td>11101</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2011</td>\n",
       "      <td>d_1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2011-01-30</td>\n",
       "      <td>11101</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2011</td>\n",
       "      <td>d_2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2011-01-31</td>\n",
       "      <td>11101</td>\n",
       "      <td>Monday</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2011</td>\n",
       "      <td>d_3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2011-02-01</td>\n",
       "      <td>11101</td>\n",
       "      <td>Tuesday</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>2011</td>\n",
       "      <td>d_4</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2011-02-02</td>\n",
       "      <td>11101</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>2011</td>\n",
       "      <td>d_5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1964</th>\n",
       "      <td>2016-06-15</td>\n",
       "      <td>11620</td>\n",
       "      <td>Wednesday</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>2016</td>\n",
       "      <td>d_1965</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1965</th>\n",
       "      <td>2016-06-16</td>\n",
       "      <td>11620</td>\n",
       "      <td>Thursday</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>2016</td>\n",
       "      <td>d_1966</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1966</th>\n",
       "      <td>2016-06-17</td>\n",
       "      <td>11620</td>\n",
       "      <td>Friday</td>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "      <td>2016</td>\n",
       "      <td>d_1967</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1967</th>\n",
       "      <td>2016-06-18</td>\n",
       "      <td>11621</td>\n",
       "      <td>Saturday</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>2016</td>\n",
       "      <td>d_1968</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1968</th>\n",
       "      <td>2016-06-19</td>\n",
       "      <td>11621</td>\n",
       "      <td>Sunday</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>2016</td>\n",
       "      <td>d_1969</td>\n",
       "      <td>NBAFinalsEnd</td>\n",
       "      <td>Sporting</td>\n",
       "      <td>Father's day</td>\n",
       "      <td>Cultural</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1969 rows × 14 columns</p>\n",
       ""
      ],
      "text/plain": [
       "            date  wm_yr_wk    weekday  wday  month  year       d  \\\n",
       "0     2011-01-29     11101   Saturday     1      1  2011     d_1   \n",
       "1     2011-01-30     11101     Sunday     2      1  2011     d_2   \n",
       "2     2011-01-31     11101     Monday     3      1  2011     d_3   \n",
       "3     2011-02-01     11101    Tuesday     4      2  2011     d_4   \n",
       "4     2011-02-02     11101  Wednesday     5      2  2011     d_5   \n",
       "...          ...       ...        ...   ...    ...   ...     ...   \n",
       "1964  2016-06-15     11620  Wednesday     5      6  2016  d_1965   \n",
       "1965  2016-06-16     11620   Thursday     6      6  2016  d_1966   \n",
       "1966  2016-06-17     11620     Friday     7      6  2016  d_1967   \n",
       "1967  2016-06-18     11621   Saturday     1      6  2016  d_1968   \n",
       "1968  2016-06-19     11621     Sunday     2      6  2016  d_1969   \n",
       "\n",
       "      event_name_1 event_type_1  event_name_2 event_type_2  snap_CA  snap_TX  \\\n",
       "0              NaN          NaN           NaN          NaN        0        0   \n",
       "1              NaN          NaN           NaN          NaN        0        0   \n",
       "2              NaN          NaN           NaN          NaN        0        0   \n",
       "3              NaN          NaN           NaN          NaN        1        1   \n",
       "4              NaN          NaN           NaN          NaN        1        0   \n",
       "...            ...          ...           ...          ...      ...      ...   \n",
       "1964           NaN          NaN           NaN          NaN        0        1   \n",
       "1965           NaN          NaN           NaN          NaN        0        0   \n",
       "1966           NaN          NaN           NaN          NaN        0        0   \n",
       "1967           NaN          NaN           NaN          NaN        0        0   \n",
       "1968  NBAFinalsEnd     Sporting  Father's day     Cultural        0        0   \n",
       "\n",
       "      snap_WI  \n",
       "0           0  \n",
       "1           0  \n",
       "2           0  \n",
       "3           0  \n",
       "4           1  \n",
       "...       ...  \n",
       "1964        1  \n",
       "1965        0  \n",
       "1966        0  \n",
       "1967        0  \n",
       "1968        0  \n",
       "\n",
       "[1969 rows x 14 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "calendar = pd.read_csv(\"../data/calendar.csv\")\n",
    "calendar"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来我们再来看商品每周的价格信息。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>store_id</th>\n",
       "      <th>item_id</th>\n",
       "      <th>wm_yr_wk</th>\n",
       "      <th>sell_price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>CA_1</td>\n",
       "      <td>HOBBIES_1_001</td>\n",
       "      <td>11325</td>\n",
       "      <td>9.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>CA_1</td>\n",
       "      <td>HOBBIES_1_001</td>\n",
       "      <td>11326</td>\n",
       "      <td>9.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>CA_1</td>\n",
       "      <td>HOBBIES_1_001</td>\n",
       "      <td>11327</td>\n",
       "      <td>8.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>CA_1</td>\n",
       "      <td>HOBBIES_1_001</td>\n",
       "      <td>11328</td>\n",
       "      <td>8.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>CA_1</td>\n",
       "      <td>HOBBIES_1_001</td>\n",
       "      <td>11329</td>\n",
       "      <td>8.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6841116</th>\n",
       "      <td>WI_3</td>\n",
       "      <td>FOODS_3_827</td>\n",
       "      <td>11617</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6841117</th>\n",
       "      <td>WI_3</td>\n",
       "      <td>FOODS_3_827</td>\n",
       "      <td>11618</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6841118</th>\n",
       "      <td>WI_3</td>\n",
       "      <td>FOODS_3_827</td>\n",
       "      <td>11619</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6841119</th>\n",
       "      <td>WI_3</td>\n",
       "      <td>FOODS_3_827</td>\n",
       "      <td>11620</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6841120</th>\n",
       "      <td>WI_3</td>\n",
       "      <td>FOODS_3_827</td>\n",
       "      <td>11621</td>\n",
       "      <td>1.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6841121 rows × 4 columns</p>\n",
       ""
      ],
      "text/plain": [
       "        store_id        item_id  wm_yr_wk  sell_price\n",
       "0           CA_1  HOBBIES_1_001     11325        9.58\n",
       "1           CA_1  HOBBIES_1_001     11326        9.58\n",
       "2           CA_1  HOBBIES_1_001     11327        8.26\n",
       "3           CA_1  HOBBIES_1_001     11328        8.26\n",
       "4           CA_1  HOBBIES_1_001     11329        8.26\n",
       "...          ...            ...       ...         ...\n",
       "6841116     WI_3    FOODS_3_827     11617        1.00\n",
       "6841117     WI_3    FOODS_3_827     11618        1.00\n",
       "6841118     WI_3    FOODS_3_827     11619        1.00\n",
       "6841119     WI_3    FOODS_3_827     11620        1.00\n",
       "6841120     WI_3    FOODS_3_827     11621        1.00\n",
       "\n",
       "[6841121 rows x 4 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sell_prices = pd.read_csv(\"../data/sell_prices.csv\")\n",
    "sell_prices"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "导入了数据之后，我们来考虑如何进行特征工程。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 延迟特征"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先，这是一个对时间序列的预测任务。在时间序列预测任务中，基于历史信息抽取的特征是很重要的一部分，这些特征又常常被称为延迟特征（Lag Feature)。延迟特征的抽取需要考虑两个主要因素。首先是局部性，即距离预测目标时间越近的数据影响越大，如预测t_(k+1)的时候，历史序列的值t_k到t_1的影响越来越小。其次是周期性，大多数实际任务中的时间序列，受到人类活动的影响，基本都会以星期（七天）作为一个周期。利用这个，我们可以聚合与预测时间点同个周期的历史值，并抽取特征。\n",
    "\n",
    "下面我们用代码来说明怎么抽取这两类特征。\n",
    "首先，我们只留下sales中的历史值，删去其他列。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>d_1</th>\n",
       "      <th>d_2</th>\n",
       "      <th>d_3</th>\n",
       "      <th>d_4</th>\n",
       "      <th>d_5</th>\n",
       "      <th>d_6</th>\n",
       "      <th>d_7</th>\n",
       "      <th>d_8</th>\n",
       "      <th>d_9</th>\n",
       "      <th>d_10</th>\n",
       "      <th>...</th>\n",
       "      <th>d_1904</th>\n",
       "      <th>d_1905</th>\n",
       "      <th>d_1906</th>\n",
       "      <th>d_1907</th>\n",
       "      <th>d_1908</th>\n",
       "      <th>d_1909</th>\n",
       "      <th>d_1910</th>\n",
       "      <th>d_1911</th>\n",
       "      <th>d_1912</th>\n",
       "      <th>d_1913</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 1913 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       d_1  d_2  d_3  d_4  d_5  d_6  d_7  d_8  d_9  d_10  ...  d_1904  d_1905  \\\n",
       "0        0    0    0    0    0    0    0    0    0     0  ...       1       3   \n",
       "1        0    0    0    0    0    0    0    0    0     0  ...       0       0   \n",
       "2        0    0    0    0    0    0    0    0    0     0  ...       2       1   \n",
       "3        0    0    0    0    0    0    0    0    0     0  ...       1       0   \n",
       "4        0    0    0    0    0    0    0    0    0     0  ...       2       1   \n",
       "...    ...  ...  ...  ...  ...  ...  ...  ...  ...   ...  ...     ...     ...   \n",
       "30485    0    0    2    2    0    3    1    4    1     0  ...       2       0   \n",
       "30486    0    0    0    0    0    5    0    1    1     3  ...       0       0   \n",
       "30487    0    6    0    2    2    4    1    8    5     2  ...       2       1   \n",
       "30488    0    0    0    0    0    0    0    0    0     0  ...       0       0   \n",
       "30489    0    0    0    0    0    0    0    0    0     0  ...       0       0   \n",
       "\n",
       "       d_1906  d_1907  d_1908  d_1909  d_1910  d_1911  d_1912  d_1913  \n",
       "0           0       1       1       1       3       0       1       1  \n",
       "1           0       0       0       1       0       0       0       0  \n",
       "2           2       1       1       1       0       1       1       1  \n",
       "3           5       4       1       0       1       3       7       2  \n",
       "4           1       0       1       1       2       2       2       4  \n",
       "...       ...     ...     ...     ...     ...     ...     ...     ...  \n",
       "30485       0       0       0       0       1       0       0       1  \n",
       "30486       0       0       0       0       0       0       1       0  \n",
       "30487       0       2       0       1       0       0       1       0  \n",
       "30488       1       0       0       1       0       3       1       3  \n",
       "30489       0       0       0       0       0       0       0       0  \n",
       "\n",
       "[30490 rows x 1913 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d_cols = [c for c in sales.columns if 'd_' in c] # sales data columns\n",
    "x = sales[d_cols].copy()\n",
    "x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "现在假设要预测的目标是第1914天的销量d_1914。先抽取局部特征。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "target_day = 1914\n",
    "\n",
    "#使用历史数据中最后的7天构造特征\n",
    "local_range = 7\n",
    "\n",
    "# 由于使用前1913天的数据预测第1914天，历史数据与预测目标的距离只有1天，因此predict_distance=1\n",
    "# 如果使用前1913天的数据预测第1915天，则历史数据与预测目标的距离有2天，因此predict_distance=2，以此类推\n",
    "predict_distance = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>l_1</th>\n",
       "      <th>l_2</th>\n",
       "      <th>l_3</th>\n",
       "      <th>l_4</th>\n",
       "      <th>l_5</th>\n",
       "      <th>l_6</th>\n",
       "      <th>l_7</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 7 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       l_1  l_2  l_3  l_4  l_5  l_6  l_7\n",
       "0      1.0  1.0  0.0  3.0  1.0  1.0  1.0\n",
       "1      0.0  0.0  0.0  0.0  1.0  0.0  0.0\n",
       "2      1.0  1.0  1.0  0.0  1.0  1.0  1.0\n",
       "3      2.0  7.0  3.0  1.0  0.0  1.0  4.0\n",
       "4      4.0  2.0  2.0  2.0  1.0  1.0  0.0\n",
       "...    ...  ...  ...  ...  ...  ...  ...\n",
       "30485  1.0  0.0  0.0  1.0  0.0  0.0  0.0\n",
       "30486  0.0  1.0  0.0  0.0  0.0  0.0  0.0\n",
       "30487  0.0  1.0  0.0  0.0  1.0  0.0  2.0\n",
       "30488  3.0  1.0  3.0  0.0  1.0  0.0  0.0\n",
       "30489  0.0  0.0  0.0  0.0  0.0  0.0  0.0\n",
       "\n",
       "[30490 rows x 7 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_local_features(target_day, predict_distance):\n",
    "    local_features = pd.DataFrame()\n",
    "    for i in range(local_range):\n",
    "        local_features['l_'+str(i + 1)] = x['d_'+str(target_day - i - predict_distance)].astype(float)\n",
    "    l_cols = ['l_'+str(i + 1) for i in range(local_range)]\n",
    "    return local_features[l_cols]\n",
    "\n",
    "get_local_features(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "l_1 表示预测目标前一天的历史值，这里我们抽取了七天的的历史值。\n",
    "对于历史值的聚合，我们还可以用一个小技巧得到更稳定的特征。\n",
    "对于单天的历史值，或多或少都有些随机因素，具有较大的不确定性，例如某天天气不好，销量突然下降。\n",
    "实际上，我们可以用连续几天的加和（或均值），用于减缓不确定性带来的影响。\n",
    "更具体来说，我们可以用前一天的历史值、前面两天的历史值的和、等等来作为局部特征。\n",
    "用代码表示的话，即"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>la_1</th>\n",
       "      <th>la_2</th>\n",
       "      <th>la_3</th>\n",
       "      <th>la_4</th>\n",
       "      <th>la_5</th>\n",
       "      <th>la_6</th>\n",
       "      <th>la_7</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>18.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>12.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 7 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       la_1  la_2  la_3  la_4  la_5  la_6  la_7\n",
       "0       1.0   2.0   2.0   5.0   6.0   7.0   8.0\n",
       "1       0.0   0.0   0.0   0.0   1.0   1.0   1.0\n",
       "2       1.0   2.0   3.0   3.0   4.0   5.0   6.0\n",
       "3       2.0   9.0  12.0  13.0  13.0  14.0  18.0\n",
       "4       4.0   6.0   8.0  10.0  11.0  12.0  12.0\n",
       "...     ...   ...   ...   ...   ...   ...   ...\n",
       "30485   1.0   1.0   1.0   2.0   2.0   2.0   2.0\n",
       "30486   0.0   1.0   1.0   1.0   1.0   1.0   1.0\n",
       "30487   0.0   1.0   1.0   1.0   2.0   2.0   4.0\n",
       "30488   3.0   4.0   7.0   7.0   8.0   8.0   8.0\n",
       "30489   0.0   0.0   0.0   0.0   0.0   0.0   0.0\n",
       "\n",
       "[30490 rows x 7 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_local_accumulated_feature(target_day, predict_distance):\n",
    "    local_accumulated_feature = pd.DataFrame()\n",
    "    local_accumulated_feature['la_1'] = x['d_'+str(target_day - predict_distance)].astype(float)\n",
    "    for i in range(1, local_range):\n",
    "        local_accumulated_feature['la_'+str(i + 1)] = x['d_'+str(target_day - i - predict_distance)].astype(float) +\\\n",
    "            local_accumulated_feature['la_' + str(i)]\n",
    "    la_cols = ['la_'+str(i + 1) for i in range(local_range)]\n",
    "    return local_accumulated_feature[la_cols]\n",
    "\n",
    "get_local_accumulated_feature(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "注意到，我们现在只用上了近期的历史数据。还有很多远期的历史数据没用上。\n",
    "实际上远期的历史数据也是需要的，只不过不需要那么精细，可以做一些聚合。\n",
    "例如过去两周，过去一个月的总和。为了更快的实现这个，我们先用cumsum 滚动累计每一天的历史值。 然后抽取我们需要的数值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>d_1913</th>\n",
       "      <th>d_1912</th>\n",
       "      <th>d_1911</th>\n",
       "      <th>d_1910</th>\n",
       "      <th>d_1909</th>\n",
       "      <th>d_1908</th>\n",
       "      <th>d_1907</th>\n",
       "      <th>d_1906</th>\n",
       "      <th>d_1905</th>\n",
       "      <th>d_1904</th>\n",
       "      <th>...</th>\n",
       "      <th>d_10</th>\n",
       "      <th>d_9</th>\n",
       "      <th>d_8</th>\n",
       "      <th>d_7</th>\n",
       "      <th>d_6</th>\n",
       "      <th>d_5</th>\n",
       "      <th>d_4</th>\n",
       "      <th>d_3</th>\n",
       "      <th>d_2</th>\n",
       "      <th>d_1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>600</td>\n",
       "      <td>600</td>\n",
       "      <td>600</td>\n",
       "      <td>600</td>\n",
       "      <td>600</td>\n",
       "      <td>600</td>\n",
       "      <td>600</td>\n",
       "      <td>600</td>\n",
       "      <td>600</td>\n",
       "      <td>600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>493</td>\n",
       "      <td>493</td>\n",
       "      <td>493</td>\n",
       "      <td>493</td>\n",
       "      <td>493</td>\n",
       "      <td>493</td>\n",
       "      <td>493</td>\n",
       "      <td>493</td>\n",
       "      <td>493</td>\n",
       "      <td>493</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>288</td>\n",
       "      <td>288</td>\n",
       "      <td>288</td>\n",
       "      <td>288</td>\n",
       "      <td>288</td>\n",
       "      <td>288</td>\n",
       "      <td>288</td>\n",
       "      <td>288</td>\n",
       "      <td>288</td>\n",
       "      <td>288</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>13</td>\n",
       "      <td>14</td>\n",
       "      <td>18</td>\n",
       "      <td>23</td>\n",
       "      <td>23</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>3288</td>\n",
       "      <td>3288</td>\n",
       "      <td>3288</td>\n",
       "      <td>3288</td>\n",
       "      <td>3288</td>\n",
       "      <td>3288</td>\n",
       "      <td>3288</td>\n",
       "      <td>3288</td>\n",
       "      <td>3288</td>\n",
       "      <td>3288</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>13</td>\n",
       "      <td>14</td>\n",
       "      <td>16</td>\n",
       "      <td>...</td>\n",
       "      <td>1849</td>\n",
       "      <td>1849</td>\n",
       "      <td>1849</td>\n",
       "      <td>1849</td>\n",
       "      <td>1849</td>\n",
       "      <td>1849</td>\n",
       "      <td>1849</td>\n",
       "      <td>1849</td>\n",
       "      <td>1849</td>\n",
       "      <td>1849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>1009</td>\n",
       "      <td>1010</td>\n",
       "      <td>1014</td>\n",
       "      <td>1015</td>\n",
       "      <td>1018</td>\n",
       "      <td>1018</td>\n",
       "      <td>1020</td>\n",
       "      <td>1022</td>\n",
       "      <td>1022</td>\n",
       "      <td>1022</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>713</td>\n",
       "      <td>714</td>\n",
       "      <td>715</td>\n",
       "      <td>715</td>\n",
       "      <td>720</td>\n",
       "      <td>720</td>\n",
       "      <td>720</td>\n",
       "      <td>720</td>\n",
       "      <td>720</td>\n",
       "      <td>720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>...</td>\n",
       "      <td>1684</td>\n",
       "      <td>1689</td>\n",
       "      <td>1697</td>\n",
       "      <td>1698</td>\n",
       "      <td>1702</td>\n",
       "      <td>1704</td>\n",
       "      <td>1706</td>\n",
       "      <td>1706</td>\n",
       "      <td>1712</td>\n",
       "      <td>1712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>...</td>\n",
       "      <td>702</td>\n",
       "      <td>702</td>\n",
       "      <td>702</td>\n",
       "      <td>702</td>\n",
       "      <td>702</td>\n",
       "      <td>702</td>\n",
       "      <td>702</td>\n",
       "      <td>702</td>\n",
       "      <td>702</td>\n",
       "      <td>702</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1329</td>\n",
       "      <td>1329</td>\n",
       "      <td>1329</td>\n",
       "      <td>1329</td>\n",
       "      <td>1329</td>\n",
       "      <td>1329</td>\n",
       "      <td>1329</td>\n",
       "      <td>1329</td>\n",
       "      <td>1329</td>\n",
       "      <td>1329</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 1913 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       d_1913  d_1912  d_1911  d_1910  d_1909  d_1908  d_1907  d_1906  d_1905  \\\n",
       "0           1       2       2       5       6       7       8       8      11   \n",
       "1           0       0       0       0       1       1       1       1       1   \n",
       "2           1       2       3       3       4       5       6       8       9   \n",
       "3           2       9      12      13      13      14      18      23      23   \n",
       "4           4       6       8      10      11      12      12      13      14   \n",
       "...       ...     ...     ...     ...     ...     ...     ...     ...     ...   \n",
       "30485       1       1       1       2       2       2       2       2       2   \n",
       "30486       0       1       1       1       1       1       1       1       1   \n",
       "30487       0       1       1       1       2       2       4       4       5   \n",
       "30488       3       4       7       7       8       8       8       9       9   \n",
       "30489       0       0       0       0       0       0       0       0       0   \n",
       "\n",
       "       d_1904  ...  d_10   d_9   d_8   d_7   d_6   d_5   d_4   d_3   d_2   d_1  \n",
       "0          12  ...   600   600   600   600   600   600   600   600   600   600  \n",
       "1           1  ...   493   493   493   493   493   493   493   493   493   493  \n",
       "2          11  ...   288   288   288   288   288   288   288   288   288   288  \n",
       "3          24  ...  3288  3288  3288  3288  3288  3288  3288  3288  3288  3288  \n",
       "4          16  ...  1849  1849  1849  1849  1849  1849  1849  1849  1849  1849  \n",
       "...       ...  ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...  \n",
       "30485       4  ...  1009  1010  1014  1015  1018  1018  1020  1022  1022  1022  \n",
       "30486       1  ...   713   714   715   715   720   720   720   720   720   720  \n",
       "30487       7  ...  1684  1689  1697  1698  1702  1704  1706  1706  1712  1712  \n",
       "30488       9  ...   702   702   702   702   702   702   702   702   702   702  \n",
       "30489       0  ...  1329  1329  1329  1329  1329  1329  1329  1329  1329  1329  \n",
       "\n",
       "[30490 rows x 1913 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tx = x[d_cols[::-1]].cumsum(axis=1)\n",
    "tx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>la_1</th>\n",
       "      <th>la_2</th>\n",
       "      <th>la_3</th>\n",
       "      <th>la_4</th>\n",
       "      <th>la_5</th>\n",
       "      <th>la_6</th>\n",
       "      <th>la_7</th>\n",
       "      <th>la_14</th>\n",
       "      <th>la_21</th>\n",
       "      <th>la_28</th>\n",
       "      <th>la_42</th>\n",
       "      <th>la_56</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>55.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>11.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>31.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>29.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>90.0</td>\n",
       "      <td>104.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>24.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>69.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>13.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>60.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>61.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>85.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 12 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       la_1  la_2  la_3  la_4  la_5  la_6  la_7  la_14  la_21  la_28  la_42  \\\n",
       "0       1.0   2.0   2.0   5.0   6.0   7.0   8.0   13.0   25.0   27.0   45.0   \n",
       "1       0.0   0.0   0.0   0.0   1.0   1.0   1.0    1.0    1.0    2.0    6.0   \n",
       "2       1.0   2.0   3.0   3.0   4.0   5.0   6.0   14.0   15.0   16.0   19.0   \n",
       "3       2.0   9.0  12.0  13.0  13.0  14.0  18.0   29.0   45.0   51.0   90.0   \n",
       "4       4.0   6.0   8.0  10.0  11.0  12.0  12.0   20.0   24.0   38.0   55.0   \n",
       "...     ...   ...   ...   ...   ...   ...   ...    ...    ...    ...    ...   \n",
       "30485   1.0   1.0   1.0   2.0   2.0   2.0   2.0    6.0    6.0    6.0    6.0   \n",
       "30486   0.0   1.0   1.0   1.0   1.0   1.0   1.0    3.0    7.0    9.0    9.0   \n",
       "30487   0.0   1.0   1.0   1.0   2.0   2.0   4.0   11.0   22.0   25.0   37.0   \n",
       "30488   3.0   4.0   7.0   7.0   8.0   8.0   8.0   13.0   22.0   26.0   45.0   \n",
       "30489   0.0   0.0   0.0   0.0   0.0   0.0   0.0    0.0    8.0   30.0   62.0   \n",
       "\n",
       "       la_56  \n",
       "0       55.0  \n",
       "1       11.0  \n",
       "2       31.0  \n",
       "3      104.0  \n",
       "4       69.0  \n",
       "...      ...  \n",
       "30485   13.0  \n",
       "30486    9.0  \n",
       "30487   60.0  \n",
       "30488   61.0  \n",
       "30489   85.0  \n",
       "\n",
       "[30490 rows x 12 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "used_history_distances = [1, 2, 3, 4, 5, 6, 7, 14, 21, 28, 42, 56]\n",
    "\n",
    "def get_accumulated_features(target_day, predict_distance):\n",
    "    long_term_features = pd.DataFrame()\n",
    "    for distance in used_history_distances:\n",
    "        long_term_features['la_' + str(distance)] = tx['d_' + str(target_day - distance - predict_distance + 1)].astype(float)\n",
    "    la_cols = ['la_' + str(distance) for distance in used_history_distances]\n",
    "    return long_term_features[la_cols]\n",
    "\n",
    "get_accumulated_features(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这样我们就从历史序列里的最近的56天，构造出了上面的12个特征。\n",
    "\n",
    "现在我们来看周期特征。我们主要考虑以星期作为周期。并且，我们选用56天历史值，也就是过去8周的数据，构造周期特征。因此，我们先取得和目标预测值同周期的历史数据。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>p_1</th>\n",
       "      <th>p_2</th>\n",
       "      <th>p_3</th>\n",
       "      <th>p_4</th>\n",
       "      <th>p_5</th>\n",
       "      <th>p_6</th>\n",
       "      <th>p_7</th>\n",
       "      <th>p_8</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 8 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       p_1  p_2  p_3  p_4  p_5  p_6  p_7  p_8\n",
       "0      1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0\n",
       "1      0.0  0.0  0.0  1.0  0.0  0.0  1.0  0.0\n",
       "2      1.0  0.0  0.0  0.0  0.0  0.0  1.0  0.0\n",
       "3      4.0  2.0  1.0  0.0  4.0  3.0  3.0  0.0\n",
       "4      0.0  2.0  0.0  1.0  2.0  2.0  2.0  1.0\n",
       "...    ...  ...  ...  ...  ...  ...  ...  ...\n",
       "30485  0.0  2.0  0.0  0.0  0.0  0.0  1.0  0.0\n",
       "30486  0.0  1.0  2.0  0.0  0.0  0.0  0.0  0.0\n",
       "30487  2.0  4.0  2.0  1.0  2.0  0.0  1.0  1.0\n",
       "30488  0.0  0.0  1.0  3.0  1.0  0.0  0.0  2.0\n",
       "30489  0.0  0.0  2.0  7.0  2.0  1.0  0.0  2.0\n",
       "\n",
       "[30490 rows x 8 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_period_sale(target_day, predict_distance):\n",
    "    period = 7\n",
    "    i_start = (predict_distance + period - 1) // period\n",
    "    period_sale = pd.DataFrame()\n",
    "    for i in range(8):\n",
    "        cur_day = target_day - (i + i_start) * period\n",
    "        period_sale['p_'+str(i + 1)] = x['d_' + str(cur_day)].astype(float)\n",
    "    return period_sale\n",
    "\n",
    "get_period_sale(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后，一样的，我们也使用累计的历史值，来提高稳定性。\n",
    "因此，用cumsum得到累计值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>p_1</th>\n",
       "      <th>p_2</th>\n",
       "      <th>p_3</th>\n",
       "      <th>p_4</th>\n",
       "      <th>p_5</th>\n",
       "      <th>p_6</th>\n",
       "      <th>p_7</th>\n",
       "      <th>p_8</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>17.0</td>\n",
       "      <td>17.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>13.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>14.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 8 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       p_1  p_2  p_3  p_4   p_5   p_6   p_7   p_8\n",
       "0      1.0  1.0  1.0  2.0   3.0   3.0   3.0   3.0\n",
       "1      0.0  0.0  0.0  1.0   1.0   1.0   2.0   2.0\n",
       "2      1.0  1.0  1.0  1.0   1.0   1.0   2.0   2.0\n",
       "3      4.0  6.0  7.0  7.0  11.0  14.0  17.0  17.0\n",
       "4      0.0  2.0  2.0  3.0   5.0   7.0   9.0  10.0\n",
       "...    ...  ...  ...  ...   ...   ...   ...   ...\n",
       "30485  0.0  2.0  2.0  2.0   2.0   2.0   3.0   3.0\n",
       "30486  0.0  1.0  3.0  3.0   3.0   3.0   3.0   3.0\n",
       "30487  2.0  6.0  8.0  9.0  11.0  11.0  12.0  13.0\n",
       "30488  0.0  0.0  1.0  4.0   5.0   5.0   5.0   7.0\n",
       "30489  0.0  0.0  2.0  9.0  11.0  12.0  12.0  14.0\n",
       "\n",
       "[30490 rows x 8 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_period_features(target_day, predict_distance):\n",
    "    tx_period = get_period_sale(target_day, predict_distance)\n",
    "    tx_period = tx_period.cumsum(axis=1)\n",
    "    return tx_period\n",
    "\n",
    "get_period_features(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "综上，以下是我们基于历史数据构造出的所有特征。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>la_1</th>\n",
       "      <th>la_2</th>\n",
       "      <th>la_3</th>\n",
       "      <th>la_4</th>\n",
       "      <th>la_5</th>\n",
       "      <th>la_6</th>\n",
       "      <th>la_7</th>\n",
       "      <th>la_14</th>\n",
       "      <th>la_21</th>\n",
       "      <th>la_28</th>\n",
       "      <th>la_42</th>\n",
       "      <th>la_56</th>\n",
       "      <th>p_1</th>\n",
       "      <th>p_2</th>\n",
       "      <th>p_3</th>\n",
       "      <th>p_4</th>\n",
       "      <th>p_5</th>\n",
       "      <th>p_6</th>\n",
       "      <th>p_7</th>\n",
       "      <th>p_8</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>29.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>90.0</td>\n",
       "      <td>104.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>17.0</td>\n",
       "      <td>17.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>24.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>69.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>37.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>13.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>61.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>85.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>14.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 20 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       la_1  la_2  la_3  la_4  la_5  la_6  la_7  la_14  la_21  la_28  la_42  \\\n",
       "0       1.0   2.0   2.0   5.0   6.0   7.0   8.0   13.0   25.0   27.0   45.0   \n",
       "1       0.0   0.0   0.0   0.0   1.0   1.0   1.0    1.0    1.0    2.0    6.0   \n",
       "2       1.0   2.0   3.0   3.0   4.0   5.0   6.0   14.0   15.0   16.0   19.0   \n",
       "3       2.0   9.0  12.0  13.0  13.0  14.0  18.0   29.0   45.0   51.0   90.0   \n",
       "4       4.0   6.0   8.0  10.0  11.0  12.0  12.0   20.0   24.0   38.0   55.0   \n",
       "...     ...   ...   ...   ...   ...   ...   ...    ...    ...    ...    ...   \n",
       "30485   1.0   1.0   1.0   2.0   2.0   2.0   2.0    6.0    6.0    6.0    6.0   \n",
       "30486   0.0   1.0   1.0   1.0   1.0   1.0   1.0    3.0    7.0    9.0    9.0   \n",
       "30487   0.0   1.0   1.0   1.0   2.0   2.0   4.0   11.0   22.0   25.0   37.0   \n",
       "30488   3.0   4.0   7.0   7.0   8.0   8.0   8.0   13.0   22.0   26.0   45.0   \n",
       "30489   0.0   0.0   0.0   0.0   0.0   0.0   0.0    0.0    8.0   30.0   62.0   \n",
       "\n",
       "       la_56  p_1  p_2  p_3  p_4   p_5   p_6   p_7   p_8  \n",
       "0       55.0  1.0  1.0  1.0  2.0   3.0   3.0   3.0   3.0  \n",
       "1       11.0  0.0  0.0  0.0  1.0   1.0   1.0   2.0   2.0  \n",
       "2       31.0  1.0  1.0  1.0  1.0   1.0   1.0   2.0   2.0  \n",
       "3      104.0  4.0  6.0  7.0  7.0  11.0  14.0  17.0  17.0  \n",
       "4       69.0  0.0  2.0  2.0  3.0   5.0   7.0   9.0  10.0  \n",
       "...      ...  ...  ...  ...  ...   ...   ...   ...   ...  \n",
       "30485   13.0  0.0  2.0  2.0  2.0   2.0   2.0   3.0   3.0  \n",
       "30486    9.0  0.0  1.0  3.0  3.0   3.0   3.0   3.0   3.0  \n",
       "30487   60.0  2.0  6.0  8.0  9.0  11.0  11.0  12.0  13.0  \n",
       "30488   61.0  0.0  0.0  1.0  4.0   5.0   5.0   5.0   7.0  \n",
       "30489   85.0  0.0  0.0  2.0  9.0  11.0  12.0  12.0  14.0  \n",
       "\n",
       "[30490 rows x 20 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_history_features(target_day, predict_distance):\n",
    "    return pd.concat([get_accumulated_features(target_day, predict_distance),\n",
    "                      get_period_features(target_day, predict_distance)], axis=1)\n",
    "\n",
    "get_history_features(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这样，我们就得到了一个时间序列的延迟特征。\n",
    "\n",
    "另外，如同上文所提到的，这次赛题会评测所有不同粒度的时间序列。因此，在得到最细粒度（不同商店的不同商品）的特征后，我们可以按照各种层级的信息，例如大类、小类等等，聚合出各种粒度的时间序列。然后，在把这些粗粒度的序列，合并到对应的最细粒度的序列上。通过这样的处理，可以让每条最细粒度的序列，也包含聚合后的各种层级的信息。举个简单的例子，例如FOODS_3_099_CA_3这个序列，我们可以把聚合后的大类Foods的序列上抽取的特征，即聚合后的CA_3这个商店的序列特征，都算出来，然后再作为FOODS_3_099_CA_3这个序列的特征，有兴趣的读者可以尝试。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 日历特征"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来，我们考虑如何使用日历信息构造特征。首先，日历信息本身就是周期性的一种表达。从中我们可以挖掘出更多的周期性特征。例如，某些商品的销量可能随着月份呈现周期性规律。例如，下面我们画出FOODS_3_015_CA_1这一商品的每月平均销量曲线。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABHcAAAEvCAYAAADPSi0mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAACNR0lEQVR4nOzdd1gbh/kH8O9pgVgSey8bjLeNjfeeWU6cvXfapJlNmu7x695t2qbZezlJs/ewHe9tgydgg7FZYgsESICEpPv9IeR4I4GkO8H38zx+4gC6e419SHrvHYIoiiAiIiIiIiIiouCkkDoAIiIiIiIiIiIaOCZ3iIiIiIiIiIiCGJM7RERERERERERBjMkdIiIiIiIiIqIgxuQOEREREREREVEQY3KHiIiIiIiIiCiIqfxx0Li4ODErK8sfhyYiIiIiIiIiGpYKCwtbRFGMP/3jfknuZGVlYc+ePf44NBERERERERHRsCQIQtXZPs62LCIiIiIiIiKiIMbkDhERERERERFREGNyh4iIiIiIiIgoiDG5Q0REREREREQUxJjcISIiIiIiIiIKYkzuEBEREREREREFMSZ3iIiIiIiIiIiCGJM7RERERERERERBjMkdIiIiIiIiIqIgxuQOEREREREREZ3iaJMZNa1dUodBHmJyh4iIiIiIiIhO8YN39uF3n5VIHQZ5yKPkjiAIekEQ3hME4bAgCKWCIMzyd2BEREREREREJI369h60mK1Sh0EeUnn4df8B8JUoilcLgqABEObHmIiIiIiIiIhIIk6niDaLDZEhnqYMSGr9/k0JgqADMB/A7QAgiqINgM2/YRERERERERGRFDp6emF3imjv7pU6FPKQJ21Z2QCaAbwsCMJeQRBeEAQh3M9xEREREREREZEEWsyueo727l6IoihxNOQJT5I7KgBTADwtimI+AAuAn57+RYIg3C0Iwh5BEPY0Nzf7OEwiIiIiIiIiCoRWiyu5Y3eK6LI5JI6GPOFJcqcWQK0oijv7/v89uJI9pxBF8TlRFAtEUSyIj4/3ZYxEREREREREFCDGkwYpm9iaFRT6Te6IotgAoEYQhLy+Dy0BwH1oRERERERERENQi+XbMbvtXUzuBANPR18/CGBV36asYwDu8F9IRERERERERCSVVvNJyR1W7gQFj5I7oijuA1Dg31CIiIiIiIiISGpGy7dtWUzuBAdPZu4QERERERER0TBhNNsQqnalC9q7bf18NckBkztEREREREREdILRYkV2XAQAVu4ECyZ3iIiIiIiIiOgEo9mGjBgtlAqByZ0gweQOEREREREREZ1gtNgQFxECnVbN5E6QYHKHiIiIiIiIiAAADqeIti4bYsM1fckdu9QhkQeY3CEiIiIiIiIiAEBblw2iCMRGhCBKq4apiwOVgwGTO0REREREREQEwDVvBwBiIzTQa9XoYFtWUGByh4iIiIiIiIgAuDZlAUDMibYsJneCAZM7RERERERERATg28odDlQOLkzuEBEREREREREAwGg+s3LH6RQljor6w+QOEREREREREQEAWi02CAIQHaaBPkwNpwiYbdyYJXdM7hARERERERERAKDFYkNMmAZKhYAorRoA0N7F1iy5Y3KHiIiIiIiIiAC42rJiwjUAAJ07ucO5O7LH5A4RERERERERAXC1ZcVGMLkTbJjcISIiIiIiIiIArm1ZsREhAAB9GJM7wYLJHSIiIiIiIiICALSYrYhlW1bQYXKHiIiIiIiIiGCzO9HRY0dsuKtyh8md4MHkDhERERERERGhrcsGACdm7mjVSqiVApM7QYDJHSIiIiIiIiJCi9kKACfasgRBgE6rhomr0GWPyR0iIiIiIiIiQqvFXbkTcuJjOq0aHazckT0md4iIiIiIiIgIRvOpbVmAK7nDtiz5Y3KHiIiIiIiIiGB0V+6EM7kTbJjcISIiIiIiIiIYzVaoFAKiQtUnPqbTqmHqtkkYFXmCyR0iIiIiIiIigtFsQ0y4BgqFcOJj+jAN2jlQWfaY3CEiIiIiIiIiGC2u5M7JorRqdFrtcDpFiaIiTzC5Q0REREREREQwWqyIO2lTFuBqyxJFoLPHLlFU5Akmd4iIiIiIiIgIRrPtlE1ZgCu5A4Bzd2SOyR0iIiIiIiIiQutZ2rL0fckdbsySNyZ3iIiIiIiIiIa5nl4HzFb7mW1ZYUzuBAMmd4iIiIiIiIiGOaPF1XYVG372tiwmd+SNyR0iIiIiIiKiYa7V7ErunN6WxeROcGByh4iIiIiIiGiYa7FYAQCxZ9mWBQCmLiZ35IzJHSIiIiIiIqJhzthXuRN32rasULUSISoFOli5I2tM7hARERERERENc619lTunt2UBruodtmXJG5M7RERERERERMOc0WyDRqVARIjqjM8xuSN/TO4QERERERERDXMtZhviwjUQBOGMz+m0as7ckbkzU3JnIQhCJYBOAA4AdlEUC/wZFBEREREREREFTqvFipiIM1uyAEAfpkadqSfAEZE3PEru9FkkimKL3yIhIiIiIiIiIkkYLTbEhoec9XNRWjVK6zsDHBF5g21ZRERERERERMOc0WxD7Dkqd3RaNbdlyZynyR0RwGpBEAoFQbjbnwERERERERERUeCIogijxYrYs2zKAlzJnU6rHXaHM8CRkac8bcuaK4qiQRCEBABrBEE4LIrippO/oC/pczcAZGRk+DhMIiIiIiIiIvKHLpsDPb1OxEacvS1Lr1UDADp67GddlU7S86hyRxRFQ99/mwB8CGD6Wb7mOVEUC0RRLIiPj/dtlERERERERETkF0azDQDOXbkT5krucB26fPWb3BEEIVwQhEj37wEsB3DI34ERERERERERkf8ZLVYAOO/MHYDJHTnzpC0rEcCHfbvuVQDeFEXxK79GRUREREREREQB8W3lztnbstzJHVOXLWAxkXf6Te6IongMwKQAxEJEREREREREAcbKneDHVehEREREREREw5jR0l/ljivpw3Xo8sXkDhEREREREdEwZjTbEKZRQqtRnvXzrNyRPyZ3iIiIiIiIiIYxo9l6zpYsANCoFNCqlUzuyBiTO0RERERERETDmNFiQ8w5WrLcdFo1TF1M7sgVkztEREREREREw5jRbENc+LkrdwBAH6Zm5Y6MMblDRERERERENIwZLVbE9JPcidIyuSNnTO4QERERERERDVOiKKLVYkNsRP9tWUzuyBeTO0RERERERETDVEePHb0OEXHnGagMMLkjd0zuEBEREREREQ1TrRYbAPTblqVnckfWmNwhIiIiIiIiGqaMZisAeNSW1WVzoNfhDERY5CUmd4iIiIiIiIiGqRazq3Intp/KHV2YGgBYvSNTTO4QERERERERDVPutqxYD2buAICpi8kdOWJyh4iIiIiIiGiYcrdlebIKHWDljlwxuUNEREREREQ0TBktNkSGqhCiUp736/R9yZ0OJndkickdIiIiIiIiomHKaLH1O28H+LYti5U78sTkDhERERERBR2nU8S1z27H6uIGqUMhCmpGs7XfTVkAkztyx+QOEREREREFnaZOK3Ydb8XWoy1Sh0IU1Ixmzyp3ojhQWdaY3CEiIiIioqBjMHX1/bdH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",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg height=\"302.878125pt\" version=\"1.1\" viewBox=\"0 0 1143.7625 302.878125\" width=\"1143.7625pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2021-06-02T06:49:59.400231</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.4.2, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 302.878125 \nL 1143.7625 302.878125 \nL 1143.7625 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 20.5625 279 \nL 1136.5625 279 \nL 1136.5625 7.2 \nL 20.5625 7.2 \nz\n\" style=\"fill:#ffffff;\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"m492d22f9b7\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"54.65788\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 2 -->\n      <g transform=\"translate(51.47663 293.598437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" id=\"DejaVuSans-32\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"71.289773\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 3 -->\n      <g transform=\"translate(68.108523 293.598437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 2597 2516 \nQ 3050 2419 3304 2112 \nQ 3559 1806 3559 1356 \nQ 3559 666 3084 287 \nQ 2609 -91 1734 -91 \nQ 1441 -91 1130 -33 \nQ 819 25 488 141 \nL 488 750 \nQ 750 597 1062 519 \nQ 1375 441 1716 441 \nQ 2309 441 2620 675 \nQ 2931 909 2931 1356 \nQ 2931 1769 2642 2001 \nQ 2353 2234 1838 2234 \nL 1294 2234 \nL 1294 2753 \nL 1863 2753 \nQ 2328 2753 2575 2939 \nQ 2822 3125 2822 3475 \nQ 2822 3834 2567 4026 \nQ 2313 4219 1838 4219 \nQ 1578 4219 1281 4162 \nQ 984 4106 628 3988 \nL 628 4550 \nQ 988 4650 1302 4700 \nQ 1616 4750 1894 4750 \nQ 2613 4750 3031 4423 \nQ 3450 4097 3450 3541 \nQ 3450 3153 3228 2886 \nQ 3006 2619 2597 2516 \nz\n\" id=\"DejaVuSans-33\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-33\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"87.921665\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 4 -->\n      <g transform=\"translate(84.740415 293.598437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 2419 4116 \nL 825 1625 \nL 2419 1625 \nL 2419 4116 \nz\nM 2253 4666 \nL 3047 4666 \nL 3047 1625 \nL 3713 1625 \nL 3713 1100 \nL 3047 1100 \nL 3047 0 \nL 2419 0 \nL 2419 1100 \nL 313 1100 \nL 313 1709 \nL 2253 4666 \nz\n\" id=\"DejaVuSans-34\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-34\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"104.553558\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 5 -->\n      <g transform=\"translate(101.372308 293.598437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 691 4666 \nL 3169 4666 \nL 3169 4134 \nL 1269 4134 \nL 1269 2991 \nQ 1406 3038 1543 3061 \nQ 1681 3084 1819 3084 \nQ 2600 3084 3056 2656 \nQ 3513 2228 3513 1497 \nQ 3513 744 3044 326 \nQ 2575 -91 1722 -91 \nQ 1428 -91 1123 -41 \nQ 819 9 494 109 \nL 494 744 \nQ 775 591 1075 516 \nQ 1375 441 1709 441 \nQ 2250 441 2565 725 \nQ 2881 1009 2881 1497 \nQ 2881 1984 2565 2268 \nQ 2250 2553 1709 2553 \nQ 1456 2553 1204 2497 \nQ 953 2441 691 2322 \nL 691 4666 \nz\n\" id=\"DejaVuSans-35\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"121.185451\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 6 -->\n      <g transform=\"translate(118.004201 293.598437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 2113 2584 \nQ 1688 2584 1439 2293 \nQ 1191 2003 1191 1497 \nQ 1191 994 1439 701 \nQ 1688 409 2113 409 \nQ 2538 409 2786 701 \nQ 3034 994 3034 1497 \nQ 3034 2003 2786 2293 \nQ 2538 2584 2113 2584 \nz\nM 3366 4563 \nL 3366 3988 \nQ 3128 4100 2886 4159 \nQ 2644 4219 2406 4219 \nQ 1781 4219 1451 3797 \nQ 1122 3375 1075 2522 \nQ 1259 2794 1537 2939 \nQ 1816 3084 2150 3084 \nQ 2853 3084 3261 2657 \nQ 3669 2231 3669 1497 \nQ 3669 778 3244 343 \nQ 2819 -91 2113 -91 \nQ 1303 -91 875 529 \nQ 447 1150 447 2328 \nQ 447 3434 972 4092 \nQ 1497 4750 2381 4750 \nQ 2619 4750 2861 4703 \nQ 3103 4656 3366 4563 \nz\n\" id=\"DejaVuSans-36\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-36\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_6\">\n     <g id=\"line2d_6\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"137.817344\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_6\">\n      <!-- 7 -->\n      <g transform=\"translate(134.636094 293.598437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 525 4666 \nL 3525 4666 \nL 3525 4397 \nL 1831 0 \nL 1172 0 \nL 2766 4134 \nL 525 4134 \nL 525 4666 \nz\n\" id=\"DejaVuSans-37\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-37\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_7\">\n     <g id=\"line2d_7\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"154.449236\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 8 -->\n      <g transform=\"translate(151.267986 293.598437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 2034 2216 \nQ 1584 2216 1326 1975 \nQ 1069 1734 1069 1313 \nQ 1069 891 1326 650 \nQ 1584 409 2034 409 \nQ 2484 409 2743 651 \nQ 3003 894 3003 1313 \nQ 3003 1734 2745 1975 \nQ 2488 2216 2034 2216 \nz\nM 1403 2484 \nQ 997 2584 770 2862 \nQ 544 3141 544 3541 \nQ 544 4100 942 4425 \nQ 1341 4750 2034 4750 \nQ 2731 4750 3128 4425 \nQ 3525 4100 3525 3541 \nQ 3525 3141 3298 2862 \nQ 3072 2584 2669 2484 \nQ 3125 2378 3379 2068 \nQ 3634 1759 3634 1313 \nQ 3634 634 3220 271 \nQ 2806 -91 2034 -91 \nQ 1263 -91 848 271 \nQ 434 634 434 1313 \nQ 434 1759 690 2068 \nQ 947 2378 1403 2484 \nz\nM 1172 3481 \nQ 1172 3119 1398 2916 \nQ 1625 2713 2034 2713 \nQ 2441 2713 2670 2916 \nQ 2900 3119 2900 3481 \nQ 2900 3844 2670 4047 \nQ 2441 4250 2034 4250 \nQ 1625 4250 1398 4047 \nQ 1172 3844 1172 3481 \nz\n\" id=\"DejaVuSans-38\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-38\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_8\">\n     <g id=\"line2d_8\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"171.081129\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 9 -->\n      <g transform=\"translate(167.899879 293.598437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 703 97 \nL 703 672 \nQ 941 559 1184 500 \nQ 1428 441 1663 441 \nQ 2288 441 2617 861 \nQ 2947 1281 2994 2138 \nQ 2813 1869 2534 1725 \nQ 2256 1581 1919 1581 \nQ 1219 1581 811 2004 \nQ 403 2428 403 3163 \nQ 403 3881 828 4315 \nQ 1253 4750 1959 4750 \nQ 2769 4750 3195 4129 \nQ 3622 3509 3622 2328 \nQ 3622 1225 3098 567 \nQ 2575 -91 1691 -91 \nQ 1453 -91 1209 -44 \nQ 966 3 703 97 \nz\nM 1959 2075 \nQ 2384 2075 2632 2365 \nQ 2881 2656 2881 3163 \nQ 2881 3666 2632 3958 \nQ 2384 4250 1959 4250 \nQ 1534 4250 1286 3958 \nQ 1038 3666 1038 3163 \nQ 1038 2656 1286 2365 \nQ 1534 2075 1959 2075 \nz\n\" id=\"DejaVuSans-39\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-39\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_9\">\n     <g id=\"line2d_9\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"187.713022\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 10 -->\n      <g transform=\"translate(181.350522 293.598437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" id=\"DejaVuSans-31\" transform=\"scale(0.015625)\"/>\n        <path d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" id=\"DejaVuSans-30\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_10\">\n     <g id=\"line2d_10\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"204.344914\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 11 -->\n      <g transform=\"translate(197.982414 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_11\">\n     <g id=\"line2d_11\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"220.976807\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 12 -->\n      <g transform=\"translate(214.614307 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_12\">\n     <g id=\"line2d_12\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"237.6087\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 1 -->\n      <g transform=\"translate(234.42745 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_13\">\n     <g id=\"line2d_13\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"254.240592\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_13\">\n      <!-- 2 -->\n      <g transform=\"translate(251.059342 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_14\">\n     <g id=\"line2d_14\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"270.872485\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_14\">\n      <!-- 3 -->\n      <g transform=\"translate(267.691235 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-33\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_15\">\n     <g id=\"line2d_15\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"287.504378\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_15\">\n      <!-- 4 -->\n      <g transform=\"translate(284.323128 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-34\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_16\">\n     <g id=\"line2d_16\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"304.13627\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_16\">\n      <!-- 5 -->\n      <g transform=\"translate(300.95502 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_17\">\n     <g id=\"line2d_17\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"320.768163\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_17\">\n      <!-- 6 -->\n      <g transform=\"translate(317.586913 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-36\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_18\">\n     <g id=\"line2d_18\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"337.400056\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_18\">\n      <!-- 7 -->\n      <g transform=\"translate(334.218806 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-37\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_19\">\n     <g id=\"line2d_19\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"354.031949\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_19\">\n      <!-- 8 -->\n      <g transform=\"translate(350.850699 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-38\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_20\">\n     <g id=\"line2d_20\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"370.663841\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_20\">\n      <!-- 9 -->\n      <g transform=\"translate(367.482591 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-39\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_21\">\n     <g id=\"line2d_21\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"387.295734\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_21\">\n      <!-- 10 -->\n      <g transform=\"translate(380.933234 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_22\">\n     <g id=\"line2d_22\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"403.927627\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_22\">\n      <!-- 11 -->\n      <g transform=\"translate(397.565127 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_23\">\n     <g id=\"line2d_23\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"420.559519\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_23\">\n      <!-- 12 -->\n      <g transform=\"translate(414.197019 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_24\">\n     <g id=\"line2d_24\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"437.191412\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_24\">\n      <!-- 1 -->\n      <g transform=\"translate(434.010162 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_25\">\n     <g id=\"line2d_25\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"453.823305\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_25\">\n      <!-- 2 -->\n      <g transform=\"translate(450.642055 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_26\">\n     <g id=\"line2d_26\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"470.455197\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_26\">\n      <!-- 3 -->\n      <g transform=\"translate(467.273947 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-33\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_27\">\n     <g id=\"line2d_27\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"487.08709\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_27\">\n      <!-- 4 -->\n      <g transform=\"translate(483.90584 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-34\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_28\">\n     <g id=\"line2d_28\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"503.718983\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_28\">\n      <!-- 5 -->\n      <g transform=\"translate(500.537733 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_29\">\n     <g id=\"line2d_29\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"520.350876\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_29\">\n      <!-- 6 -->\n      <g transform=\"translate(517.169626 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-36\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_30\">\n     <g id=\"line2d_30\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"536.982768\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_30\">\n      <!-- 7 -->\n      <g transform=\"translate(533.801518 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-37\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_31\">\n     <g id=\"line2d_31\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"553.614661\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_31\">\n      <!-- 8 -->\n      <g transform=\"translate(550.433411 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-38\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_32\">\n     <g id=\"line2d_32\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"570.246554\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_32\">\n      <!-- 9 -->\n      <g transform=\"translate(567.065304 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-39\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_33\">\n     <g id=\"line2d_33\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"586.878446\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_33\">\n      <!-- 10 -->\n      <g transform=\"translate(580.515946 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_34\">\n     <g id=\"line2d_34\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"603.510339\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_34\">\n      <!-- 11 -->\n      <g transform=\"translate(597.147839 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_35\">\n     <g id=\"line2d_35\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"620.142232\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_35\">\n      <!-- 12 -->\n      <g transform=\"translate(613.779732 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_36\">\n     <g id=\"line2d_36\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"636.774124\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_36\">\n      <!-- 1 -->\n      <g transform=\"translate(633.592874 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_37\">\n     <g id=\"line2d_37\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"653.406017\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_37\">\n      <!-- 2 -->\n      <g transform=\"translate(650.224767 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_38\">\n     <g id=\"line2d_38\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"670.03791\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_38\">\n      <!-- 3 -->\n      <g transform=\"translate(666.85666 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-33\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_39\">\n     <g id=\"line2d_39\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"686.669803\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_39\">\n      <!-- 4 -->\n      <g transform=\"translate(683.488553 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-34\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_40\">\n     <g id=\"line2d_40\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"703.301695\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_40\">\n      <!-- 5 -->\n      <g transform=\"translate(700.120445 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_41\">\n     <g id=\"line2d_41\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"719.933588\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_41\">\n      <!-- 6 -->\n      <g transform=\"translate(716.752338 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-36\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_42\">\n     <g id=\"line2d_42\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"736.565481\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_42\">\n      <!-- 7 -->\n      <g transform=\"translate(733.384231 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-37\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_43\">\n     <g id=\"line2d_43\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"753.197373\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_43\">\n      <!-- 8 -->\n      <g transform=\"translate(750.016123 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-38\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_44\">\n     <g id=\"line2d_44\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"769.829266\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_44\">\n      <!-- 9 -->\n      <g transform=\"translate(766.648016 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-39\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_45\">\n     <g id=\"line2d_45\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"786.461159\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_45\">\n      <!-- 10 -->\n      <g transform=\"translate(780.098659 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_46\">\n     <g id=\"line2d_46\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"803.093051\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_46\">\n      <!-- 11 -->\n      <g transform=\"translate(796.730551 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_47\">\n     <g id=\"line2d_47\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"819.724944\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_47\">\n      <!-- 12 -->\n      <g transform=\"translate(813.362444 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_48\">\n     <g id=\"line2d_48\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"836.356837\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_48\">\n      <!-- 1 -->\n      <g transform=\"translate(833.175587 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_49\">\n     <g id=\"line2d_49\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"852.98873\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_49\">\n      <!-- 2 -->\n      <g transform=\"translate(849.80748 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_50\">\n     <g id=\"line2d_50\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"869.620622\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_50\">\n      <!-- 3 -->\n      <g transform=\"translate(866.439372 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-33\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_51\">\n     <g id=\"line2d_51\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"886.252515\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_51\">\n      <!-- 4 -->\n      <g transform=\"translate(883.071265 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-34\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_52\">\n     <g id=\"line2d_52\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"902.884408\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_52\">\n      <!-- 5 -->\n      <g transform=\"translate(899.703158 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_53\">\n     <g id=\"line2d_53\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"919.5163\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_53\">\n      <!-- 6 -->\n      <g transform=\"translate(916.33505 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-36\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_54\">\n     <g id=\"line2d_54\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"936.148193\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_54\">\n      <!-- 7 -->\n      <g transform=\"translate(932.966943 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-37\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_55\">\n     <g id=\"line2d_55\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"952.780086\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_55\">\n      <!-- 8 -->\n      <g transform=\"translate(949.598836 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-38\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_56\">\n     <g id=\"line2d_56\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"969.411978\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_56\">\n      <!-- 9 -->\n      <g transform=\"translate(966.230728 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-39\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_57\">\n     <g id=\"line2d_57\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"986.043871\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_57\">\n      <!-- 10 -->\n      <g transform=\"translate(979.681371 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_58\">\n     <g id=\"line2d_58\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1002.675764\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_58\">\n      <!-- 11 -->\n      <g transform=\"translate(996.313264 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_59\">\n     <g id=\"line2d_59\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1019.307656\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_59\">\n      <!-- 12 -->\n      <g transform=\"translate(1012.945156 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_60\">\n     <g id=\"line2d_60\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1035.939549\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_60\">\n      <!-- 1 -->\n      <g transform=\"translate(1032.758299 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_61\">\n     <g id=\"line2d_61\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1052.571442\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_61\">\n      <!-- 2 -->\n      <g transform=\"translate(1049.390192 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_62\">\n     <g id=\"line2d_62\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1069.203335\" xlink:href=\"#m492d22f9b7\" y=\"279\"/>\n      </g>\n     </g>\n     <g id=\"text_62\">\n      <!-- 3 -->\n      <g transform=\"translate(1066.022085 293.598437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-33\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_63\">\n      <defs>\n       <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"m001fea3af1\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"20.5625\" xlink:href=\"#m001fea3af1\" y=\"249.203743\"/>\n      </g>\n     </g>\n     <g id=\"text_63\">\n      <!-- 1 -->\n      <g transform=\"translate(7.2 253.002962)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_64\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"20.5625\" xlink:href=\"#m001fea3af1\" y=\"204.145989\"/>\n      </g>\n     </g>\n     <g id=\"text_64\">\n      <!-- 2 -->\n      <g transform=\"translate(7.2 207.945208)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_65\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"20.5625\" xlink:href=\"#m001fea3af1\" y=\"159.088235\"/>\n      </g>\n     </g>\n     <g id=\"text_65\">\n      <!-- 3 -->\n      <g transform=\"translate(7.2 162.887454)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-33\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_66\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"20.5625\" xlink:href=\"#m001fea3af1\" y=\"114.030481\"/>\n      </g>\n     </g>\n     <g id=\"text_66\">\n      <!-- 4 -->\n      <g transform=\"translate(7.2 117.8297)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-34\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_67\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"20.5625\" xlink:href=\"#m001fea3af1\" y=\"68.972727\"/>\n      </g>\n     </g>\n     <g id=\"text_67\">\n      <!-- 5 -->\n      <g transform=\"translate(7.2 72.771946)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_68\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"20.5625\" xlink:href=\"#m001fea3af1\" y=\"23.914973\"/>\n      </g>\n     </g>\n     <g id=\"text_68\">\n      <!-- 6 -->\n      <g transform=\"translate(7.2 27.714192)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-36\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_69\">\n    <path clip-path=\"url(#p252b02794e)\" d=\"M 71.289773 180.007907 \nL 87.921665 227.401604 \nL 104.553558 201.142139 \nL 121.185451 182.34385 \nL 137.817344 166.597861 \nL 154.449236 156.181283 \nL 171.081129 191.064706 \nL 187.713022 190.628663 \nL 204.344914 211.413369 \nL 220.976807 112.528556 \nL 237.6087 134.379144 \nL 254.240592 209.959893 \nL 270.872485 197.931127 \nL 287.504378 183.797326 \nL 304.13627 232.682567 \nL 320.768163 172.169519 \nL 337.400056 175.609412 \nL 354.031949 179.436898 \nL 370.663841 236.12246 \nL 387.295734 189.126738 \nL 403.927627 227.401604 \nL 420.559519 141.065134 \nL 437.191412 176.529947 \nL 453.823305 234.668984 \nL 470.455197 192.881551 \nL 487.08709 205.599465 \nL 503.718983 204.145989 \nL 520.350876 188.157754 \nL 536.982768 172.605561 \nL 553.614661 172.169519 \nL 570.246554 212.866845 \nL 586.878446 223.671016 \nL 603.510339 243.38984 \nL 620.142232 183.119037 \nL 636.774124 163.448663 \nL 653.406017 217.227273 \nL 670.03791 228.284072 \nL 686.669803 224.494652 \nL 703.301695 171.103636 \nL 719.933588 207.052941 \nL 736.565481 211.655615 \nL 753.197373 196.87861 \nL 769.829266 188.157754 \nL 786.461159 259.717219 \nL 803.093051 227.401604 \nL 819.724944 89.999679 \nL 836.356837 233.215508 \nL 852.98873 265.191979 \nL 869.620622 210.582811 \nL 886.252515 218.680749 \nL 902.884408 186.122888 \nL 919.5163 176.529947 \nL 936.148193 168.099786 \nL 952.780086 185.250802 \nL 969.411978 223.041176 \nL 986.043871 238.690267 \nL 1002.675764 244.843316 \nL 1019.307656 216.16139 \nL 1035.939549 19.554545 \nL 1052.571442 266.645455 \nL 1069.203335 244.542596 \nL 1085.835227 230.308556 \n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path d=\"M 20.5625 279 \nL 20.5625 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path d=\"M 1136.5625 279 \nL 1136.5625 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path d=\"M 20.5625 279 \nL 1136.5625 279 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path d=\"M 20.5625 7.2 \nL 1136.5625 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"p252b02794e\">\n   <rect height=\"271.8\" width=\"1116\" x=\"20.5625\" y=\"7.2\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "row_name = 'FOODS_3_015_CA_1_validation'\n",
    "item_data = sales.loc[sales['id'] == row_name].copy()\n",
    "calendar_history = calendar.iloc[:len(d_cols)].copy()\n",
    "months = calendar_history[\"month\"].astype(int)\n",
    "item_sales = item_data[d_cols].values[0]\n",
    "data = np.array([item_sales, months]).T\n",
    "\n",
    "from itertools import groupby\n",
    "groups = [list(values) for key, values in groupby(np.arange(data.shape[0]), lambda i: int(months[i]))]\n",
    "group_indices = np.zeros(data.shape[0])\n",
    "for group_index, group in enumerate(groups):\n",
    "    for i in group:\n",
    "        group_indices[i] = group_index\n",
    "item_dt = pd.DataFrame(data=np.array([item_sales, months]).T, columns=[\"sale\", \"month\"])\n",
    "mean_sale_by_month = item_dt.groupby(group_indices).mean().iloc[1:-1]\n",
    "plt.plot(mean_sale_by_month[\"sale\"])\n",
    "plt.xticks(np.arange(mean_sale_by_month.shape[0]), map(lambda x: int(x), mean_sale_by_month[\"month\"]))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们发现，每年的12月和1月前后，该商品的销量都会比其他月份高一些。而3月和4月前后的销量偏低。故该商品的销量变化呈现出一定的周期性规律。这提醒我们在预测销量时，可以参考历史数据中与预测目标日期位于同一月份的日期的销量。\n",
    "\n",
    "因此，我们挑出历史数据中所有与目标预测日期所在月份相同的日期，并计算他们的销量平均值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>same_month_mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.321839</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.114943</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.160920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.718391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>0.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0.568966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>0.959770</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>0.287356</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.793103</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 1 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       same_month_mean\n",
       "0             0.321839\n",
       "1             0.114943\n",
       "2             0.160920\n",
       "3             1.718391\n",
       "4             0.666667\n",
       "...                ...\n",
       "30485         0.666667\n",
       "30486         0.568966\n",
       "30487         0.959770\n",
       "30488         0.287356\n",
       "30489         0.793103\n",
       "\n",
       "[30490 rows x 1 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_same_month_mean_feature(target_day, predict_distance):\n",
    "    calendar_history = calendar.loc[calendar.index < target_day - predict_distance]\n",
    "    target_date_month = int(calendar.iloc[target_day - 1][\"month\"])\n",
    "    same_month_dates = calendar_history.loc[calendar_history[\"month\"].astype(int) == target_date_month][\"d\"]\n",
    "    same_month_mean = x[same_month_dates].mean(axis=1)\n",
    "    return pd.DataFrame(same_month_mean, columns=[\"same_month_mean\"])\n",
    "\n",
    "get_same_month_mean_feature(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "此外，日历信息还包含了特殊事件。例如，当天是否在NBA总决赛期间、当天是否父亲节、所在州当天是否允许SNAP的食品消费券等等。这些特殊事件对商品的销量也会有显著影响。例如，我们发现FOODS_3_015_CA_1这一商品在NBA决赛期间平均销量略高于其他日期的平均销量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.4\n",
      "2.1378406708595388\n"
     ]
    }
   ],
   "source": [
    "calendar_history = calendar.loc[calendar.index < target_day - predict_distance]\n",
    "print(item_dt.loc[calendar_history[\"event_name_1\"] == \"NBAFinalsEnd\"][\"sale\"].mean())\n",
    "print(item_dt.loc[calendar_history[\"event_name_1\"] != \"NBAFinalsEnd\"][\"sale\"].mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "故如果目标预测日期发生了某一特殊事件（event_name不为NaN），则我们计算历史数据中发生相同事件的日期的销量平均值。如果目标预测日期没有特殊事件，则这些特征记为NaN。此外，我们也计算历史当中与目标预测日期使用SNAP消费券情况相同的所有日期的销量平均值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>event_name_1_mean</th>\n",
       "      <th>event_name_2_mean</th>\n",
       "      <th>event_type_1_mean</th>\n",
       "      <th>event_type_2_mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 4 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       event_name_1_mean  event_name_2_mean  event_type_1_mean  \\\n",
       "0                    NaN                NaN                NaN   \n",
       "1                    NaN                NaN                NaN   \n",
       "2                    NaN                NaN                NaN   \n",
       "3                    NaN                NaN                NaN   \n",
       "4                    NaN                NaN                NaN   \n",
       "...                  ...                ...                ...   \n",
       "30485                NaN                NaN                NaN   \n",
       "30486                NaN                NaN                NaN   \n",
       "30487                NaN                NaN                NaN   \n",
       "30488                NaN                NaN                NaN   \n",
       "30489                NaN                NaN                NaN   \n",
       "\n",
       "       event_type_2_mean  \n",
       "0                    NaN  \n",
       "1                    NaN  \n",
       "2                    NaN  \n",
       "3                    NaN  \n",
       "4                    NaN  \n",
       "...                  ...  \n",
       "30485                NaN  \n",
       "30486                NaN  \n",
       "30487                NaN  \n",
       "30488                NaN  \n",
       "30489                NaN  \n",
       "\n",
       "[30490 rows x 4 columns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all_event_name_1 = np.unique(list(filter(lambda val: isinstance(val ,str), calendar[\"event_name_1\"].values)))\n",
    "all_event_name_2 = np.unique(list(filter(lambda val: isinstance(val ,str), calendar[\"event_name_2\"].values)))\n",
    "all_event_type_1 = np.unique(list(filter(lambda val: isinstance(val ,str), calendar[\"event_type_1\"].values)))\n",
    "all_event_type_2 = np.unique(list(filter(lambda val: isinstance(val ,str), calendar[\"event_type_2\"].values)))\n",
    "all_event_list = np.hstack([all_event_name_1, all_event_name_2, all_event_type_1, all_event_type_2])\n",
    "\n",
    "def get_event_features(target_day, predict_distance):\n",
    "    event_mean_price_table = pd.DataFrame()\n",
    "\n",
    "    def add_event_mean_features(event_list, event_key, target_day, predict_distance):\n",
    "        calendar_history = calendar.loc[calendar.index < target_day - predict_distance]\n",
    "        for event in event_list:\n",
    "            if event == \"nan\":\n",
    "                continue\n",
    "            str_event_col = np.array(list(map(lambda val: str(val), calendar_history[event_key].values)))\n",
    "            event_d_cols = calendar_history.loc[str_event_col == event][\"d\"]\n",
    "            event_mean_price_table[event + \"_mean_price\"] = x[event_d_cols].mean(axis=1)\n",
    "\n",
    "    add_event_mean_features(all_event_name_1, \"event_name_1\", target_day, predict_distance)\n",
    "    add_event_mean_features(all_event_name_2, \"event_name_2\", target_day, predict_distance)\n",
    "    add_event_mean_features(all_event_type_1, \"event_type_1\", target_day, predict_distance)\n",
    "    add_event_mean_features(all_event_type_2, \"event_type_2\", target_day, predict_distance)\n",
    "    \n",
    "    target_day_event_name_1 = calendar.iloc[target_day - 1][\"event_name_1\"]\n",
    "    target_day_event_name_2 = calendar.iloc[target_day - 1][\"event_name_2\"]\n",
    "    target_day_event_type_1 = calendar.iloc[target_day - 1][\"event_type_1\"]\n",
    "    target_day_event_type_2 = calendar.iloc[target_day - 1][\"event_type_2\"]\n",
    "\n",
    "    event_feature = pd.DataFrame(data=np.zeros([sales.shape[0], 0]))\n",
    "    series_nan = pd.Series(np.ones(sales.shape[0]) * np.nan, dtype=np.float, index=np.arange(sales.shape[0]))\n",
    "    event_feature[\"event_name_1_mean\"] = series_nan if not isinstance(target_day_event_name_1, str) else\\\n",
    "        event_mean_price_table[target_day_event_name_1 + \"_mean_price\"]\n",
    "    event_feature[\"event_name_2_mean\"] = series_nan if not isinstance(target_day_event_name_2, str) else\\\n",
    "        event_mean_price_table[target_day_event_name_2 + \"_mean_price\"]\n",
    "    event_feature[\"event_type_1_mean\"] = series_nan if not isinstance(target_day_event_type_1, str) else\\\n",
    "        event_mean_price_table[target_day_event_type_1 + \"_mean_price\"]\n",
    "    event_feature[\"event_type_2_mean\"] = series_nan if not isinstance(target_day_event_type_2, str) else\\\n",
    "        event_mean_price_table[target_day_event_type_2 + \"_mean_price\"]\n",
    "    return event_feature\n",
    "\n",
    "get_event_features(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>snap_mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.316446</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.254871</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.153546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.713952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.996103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>0.489478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0.289945</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>0.694466</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>0.328917</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.681995</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 1 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       snap_mean\n",
       "0       0.316446\n",
       "1       0.254871\n",
       "2       0.153546\n",
       "3       1.713952\n",
       "4       0.996103\n",
       "...          ...\n",
       "30485   0.489478\n",
       "30486   0.289945\n",
       "30487   0.694466\n",
       "30488   0.328917\n",
       "30489   0.681995\n",
       "\n",
       "[30490 rows x 1 columns]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "states = [\"CA\", \"TX\", \"WI\"]\n",
    "\n",
    "def get_snap_feature(target_day, predict_distance):\n",
    "    snap_feature = pd.DataFrame(data=np.zeros([sales.shape[0], 1]), columns=[\"snap_mean\"])\n",
    "    calendar_history = calendar.loc[calendar.index < target_day - predict_distance]\n",
    "    for state in states:\n",
    "        snap_col = \"snap_\" + state\n",
    "        state_data_indices = np.array(list(map(lambda val: val.split(\"_\")[3] == state, sales[\"id\"].values)))\n",
    "        snap_d_cols = calendar_history.loc[calendar_history[snap_col] == 1][\"d\"]\n",
    "        no_snap_d_cols = calendar_history.loc[calendar_history[snap_col] == 0][\"d\"]\n",
    "        state_snap_mean = sales.loc[state_data_indices][snap_d_cols].mean(axis=1)\n",
    "        state_no_snap_mean = sales.loc[state_data_indices][no_snap_d_cols].mean(axis=1)\n",
    "        if calendar.iloc[target_day - 1][snap_col] == 1:\n",
    "            snap_feature.loc[state_data_indices, \"snap_mean\"] = state_snap_mean\n",
    "        else:\n",
    "            snap_feature.loc[state_data_indices, \"snap_mean\"] = state_no_snap_mean\n",
    "    return snap_feature\n",
    "\n",
    "get_snap_feature(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "综上，我们从日历信息中共得到以下6个特征。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>same_month_mean</th>\n",
       "      <th>event_name_1_mean</th>\n",
       "      <th>event_name_2_mean</th>\n",
       "      <th>event_type_1_mean</th>\n",
       "      <th>event_type_2_mean</th>\n",
       "      <th>snap_mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.321839</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.316446</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.114943</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.254871</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.160920</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.153546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.718391</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.713952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.666667</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.996103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>0.666667</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.489478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0.568966</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.289945</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>0.959770</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.694466</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>0.287356</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.328917</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.793103</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.681995</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 6 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       same_month_mean  event_name_1_mean  event_name_2_mean  \\\n",
       "0             0.321839                NaN                NaN   \n",
       "1             0.114943                NaN                NaN   \n",
       "2             0.160920                NaN                NaN   \n",
       "3             1.718391                NaN                NaN   \n",
       "4             0.666667                NaN                NaN   \n",
       "...                ...                ...                ...   \n",
       "30485         0.666667                NaN                NaN   \n",
       "30486         0.568966                NaN                NaN   \n",
       "30487         0.959770                NaN                NaN   \n",
       "30488         0.287356                NaN                NaN   \n",
       "30489         0.793103                NaN                NaN   \n",
       "\n",
       "       event_type_1_mean  event_type_2_mean  snap_mean  \n",
       "0                    NaN                NaN   0.316446  \n",
       "1                    NaN                NaN   0.254871  \n",
       "2                    NaN                NaN   0.153546  \n",
       "3                    NaN                NaN   1.713952  \n",
       "4                    NaN                NaN   0.996103  \n",
       "...                  ...                ...        ...  \n",
       "30485                NaN                NaN   0.489478  \n",
       "30486                NaN                NaN   0.289945  \n",
       "30487                NaN                NaN   0.694466  \n",
       "30488                NaN                NaN   0.328917  \n",
       "30489                NaN                NaN   0.681995  \n",
       "\n",
       "[30490 rows x 6 columns]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_calendar_features(target_day, predict_distance):\n",
    "    return pd.concat([get_same_month_mean_feature(target_day, predict_distance),\n",
    "                      get_event_features(target_day, predict_distance),\n",
    "                      get_snap_feature(target_day, predict_distance)], axis=1)\n",
    "\n",
    "get_calendar_features(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 价格特征"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最后，我们尝试利用商品的历史价格信息。商品的价格一定程度上可以反应其市场供需情况，故理论上对销量的预测也有参考价值。首先观察一下FOODS_3_015_CA_1这个商品每周的价格与其销量的关系。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABZgAAAFgCAYAAAA2IxyjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAADrjElEQVR4nOzdeXwcd33/8dfsqcuWD9mOz2xix5biJDghJOGMwxlQEqAtLSlHoJRAgdLyo4CgBxRaEA1noUDDFc6UGxIUINDm4LKTQEKIvbITJ+tDPmTd5+7O7M7vj9lZraQ95ZV2V3o/Hw8/LO3OjsbyrjT7mc/3/TFs20ZEREREREREREREpFSeSh+AiIiIiIiIiIiIiNQmFZhFREREREREREREZE5UYBYRERERERERERGROVGBWURERERERERERETmRAVmEREREREREREREZkTX6UPoFw8Ho9dX19f6cMQERERERERERGRJWJiYsK2bXtJN/EumgJzfX094+PjlT4MERERERERERERWSIMw5is9DFU2pKurouIiIiIiIiIiIjI3KnALCIiIiIiIiIiIiJzogKziIiIiIiIiIiIiMyJCswiIiIiIiIiIiIiMicqMIuIiIiIiIiIiIjInKjALCIiIiIiIiIiIiJzogKziIiIiIiIiIiIiMyJCswiIiIiIiIiIiIiMicqMIuIiIiIiIiIiIjInKjALCIiIiIiIiIiIiJzogKziIiIiIiIiIiIiMyJr9IHICIiIiLiSiZt3vo/D3J0cLLShyIiIiIVkhwbIzkygm/DhkofiszBhRuX828vubDShyELSAVmEREREakaozGLHz98gq1rGtm0sqHShyMiIiIVED8xiHniOI1bz670ocgcNAX9lT4EWWAqMIuIiIhI1YhZCQBe+/RzeOUVelMpIiKyFJ38t58z+Juv0/rFt2EYRqUPR0QKqGiBOdza9iXgGqC3rTt8Qcbtfwu8GUgAXW3d4XdW6BBFREREZAHFzCQAQZ9GhYiIiCxVtmk6H1gW+NUNK1LtKn3mfgtwdeYN4da2q4AXA09q6w7vBD5SgeMSERERkQqIWakCs99b4SMRERGRSrHjcedvt9AsIlWtoh3Mbd3he8OtbaEZN/8N0NnWHY6ltuld8AMTERERkYpwIzLUwSwiIrJ0uYVl27IqfCQiZy7U0ZVOcIh0tl+Q5f53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",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg height=\"352.834375pt\" version=\"1.1\" viewBox=\"0 0 1433.365625 352.834375\" width=\"1433.365625pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2021-06-02T06:50:05.975290</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.4.2, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 352.834375 \nL 1433.365625 352.834375 \nL 1433.365625 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 50.28125 305.6 \nL 1367.18125 305.6 \nL 1367.18125 7.2 \nL 50.28125 7.2 \nz\n\" style=\"fill:#ffffff;\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"m1b66b3149d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"110.140341\" xlink:href=\"#m1b66b3149d\" y=\"305.6\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(106.959091 320.198437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" id=\"DejaVuSans-30\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"323.162017\" xlink:href=\"#m1b66b3149d\" y=\"305.6\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 50 -->\n      <g transform=\"translate(316.799517 320.198437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 691 4666 \nL 3169 4666 \nL 3169 4134 \nL 1269 4134 \nL 1269 2991 \nQ 1406 3038 1543 3061 \nQ 1681 3084 1819 3084 \nQ 2600 3084 3056 2656 \nQ 3513 2228 3513 1497 \nQ 3513 744 3044 326 \nQ 2575 -91 1722 -91 \nQ 1428 -91 1123 -41 \nQ 819 9 494 109 \nL 494 744 \nQ 775 591 1075 516 \nQ 1375 441 1709 441 \nQ 2250 441 2565 725 \nQ 2881 1009 2881 1497 \nQ 2881 1984 2565 2268 \nQ 2250 2553 1709 2553 \nQ 1456 2553 1204 2497 \nQ 953 2441 691 2322 \nL 691 4666 \nz\n\" id=\"DejaVuSans-35\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-35\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"536.183693\" xlink:href=\"#m1b66b3149d\" y=\"305.6\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 100 -->\n      <g transform=\"translate(526.639943 320.198437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" id=\"DejaVuSans-31\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"749.205368\" xlink:href=\"#m1b66b3149d\" y=\"305.6\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 150 -->\n      <g transform=\"translate(739.661618 320.198437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"962.227044\" xlink:href=\"#m1b66b3149d\" y=\"305.6\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 200 -->\n      <g transform=\"translate(952.683294 320.198437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" id=\"DejaVuSans-32\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-32\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_6\">\n     <g id=\"line2d_6\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1175.24872\" xlink:href=\"#m1b66b3149d\" y=\"305.6\"/>\n      </g>\n     </g>\n     <g id=\"text_6\">\n      <!-- 250 -->\n      <g transform=\"translate(1165.70497 320.198437)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-32\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_7\">\n     <!-- week -->\n     <g transform=\"translate(682.45625 341.475)scale(0.2 -0.2)\">\n      <defs>\n       <path d=\"M 269 3500 \nL 844 3500 \nL 1563 769 \nL 2278 3500 \nL 2956 3500 \nL 3675 769 \nL 4391 3500 \nL 4966 3500 \nL 4050 0 \nL 3372 0 \nL 2619 2869 \nL 1863 0 \nL 1184 0 \nL 269 3500 \nz\n\" id=\"DejaVuSans-77\" transform=\"scale(0.015625)\"/>\n       <path d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" id=\"DejaVuSans-65\" transform=\"scale(0.015625)\"/>\n       <path d=\"M 581 4863 \nL 1159 4863 \nL 1159 1991 \nL 2875 3500 \nL 3609 3500 \nL 1753 1863 \nL 3688 0 \nL 2938 0 \nL 1159 1709 \nL 1159 0 \nL 581 0 \nL 581 4863 \nz\n\" id=\"DejaVuSans-6b\" transform=\"scale(0.015625)\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-77\"/>\n      <use x=\"81.787109\" xlink:href=\"#DejaVuSans-65\"/>\n      <use x=\"143.310547\" xlink:href=\"#DejaVuSans-65\"/>\n      <use x=\"204.833984\" xlink:href=\"#DejaVuSans-6b\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_7\">\n      <defs>\n       <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"m1b08968824\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.28125\" xlink:href=\"#m1b08968824\" y=\"292.036364\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 0 -->\n      <g style=\"fill:#d62728;\" transform=\"translate(36.91875 295.835582)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_8\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.28125\" xlink:href=\"#m1b08968824\" y=\"258.722169\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 2 -->\n      <g style=\"fill:#d62728;\" transform=\"translate(36.91875 262.521388)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_9\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.28125\" xlink:href=\"#m1b08968824\" y=\"225.407974\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 4 -->\n      <g style=\"fill:#d62728;\" transform=\"translate(36.91875 229.207193)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 2419 4116 \nL 825 1625 \nL 2419 1625 \nL 2419 4116 \nz\nM 2253 4666 \nL 3047 4666 \nL 3047 1625 \nL 3713 1625 \nL 3713 1100 \nL 3047 1100 \nL 3047 0 \nL 2419 0 \nL 2419 1100 \nL 313 1100 \nL 313 1709 \nL 2253 4666 \nz\n\" id=\"DejaVuSans-34\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-34\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_10\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.28125\" xlink:href=\"#m1b08968824\" y=\"192.09378\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 6 -->\n      <g style=\"fill:#d62728;\" transform=\"translate(36.91875 195.892999)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 2113 2584 \nQ 1688 2584 1439 2293 \nQ 1191 2003 1191 1497 \nQ 1191 994 1439 701 \nQ 1688 409 2113 409 \nQ 2538 409 2786 701 \nQ 3034 994 3034 1497 \nQ 3034 2003 2786 2293 \nQ 2538 2584 2113 2584 \nz\nM 3366 4563 \nL 3366 3988 \nQ 3128 4100 2886 4159 \nQ 2644 4219 2406 4219 \nQ 1781 4219 1451 3797 \nQ 1122 3375 1075 2522 \nQ 1259 2794 1537 2939 \nQ 1816 3084 2150 3084 \nQ 2853 3084 3261 2657 \nQ 3669 2231 3669 1497 \nQ 3669 778 3244 343 \nQ 2819 -91 2113 -91 \nQ 1303 -91 875 529 \nQ 447 1150 447 2328 \nQ 447 3434 972 4092 \nQ 1497 4750 2381 4750 \nQ 2619 4750 2861 4703 \nQ 3103 4656 3366 4563 \nz\n\" id=\"DejaVuSans-36\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-36\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_11\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.28125\" xlink:href=\"#m1b08968824\" y=\"158.779585\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 8 -->\n      <g style=\"fill:#d62728;\" transform=\"translate(36.91875 162.578804)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 2034 2216 \nQ 1584 2216 1326 1975 \nQ 1069 1734 1069 1313 \nQ 1069 891 1326 650 \nQ 1584 409 2034 409 \nQ 2484 409 2743 651 \nQ 3003 894 3003 1313 \nQ 3003 1734 2745 1975 \nQ 2488 2216 2034 2216 \nz\nM 1403 2484 \nQ 997 2584 770 2862 \nQ 544 3141 544 3541 \nQ 544 4100 942 4425 \nQ 1341 4750 2034 4750 \nQ 2731 4750 3128 4425 \nQ 3525 4100 3525 3541 \nQ 3525 3141 3298 2862 \nQ 3072 2584 2669 2484 \nQ 3125 2378 3379 2068 \nQ 3634 1759 3634 1313 \nQ 3634 634 3220 271 \nQ 2806 -91 2034 -91 \nQ 1263 -91 848 271 \nQ 434 634 434 1313 \nQ 434 1759 690 2068 \nQ 947 2378 1403 2484 \nz\nM 1172 3481 \nQ 1172 3119 1398 2916 \nQ 1625 2713 2034 2713 \nQ 2441 2713 2670 2916 \nQ 2900 3119 2900 3481 \nQ 2900 3844 2670 4047 \nQ 2441 4250 2034 4250 \nQ 1625 4250 1398 4047 \nQ 1172 3844 1172 3481 \nz\n\" id=\"DejaVuSans-38\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-38\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_12\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.28125\" xlink:href=\"#m1b08968824\" y=\"125.465391\"/>\n      </g>\n     </g>\n     <g id=\"text_13\">\n      <!-- 10 -->\n      <g style=\"fill:#d62728;\" transform=\"translate(30.55625 129.264609)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_7\">\n     <g id=\"line2d_13\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.28125\" xlink:href=\"#m1b08968824\" y=\"92.151196\"/>\n      </g>\n     </g>\n     <g id=\"text_14\">\n      <!-- 12 -->\n      <g style=\"fill:#d62728;\" transform=\"translate(30.55625 95.950415)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-32\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_8\">\n     <g id=\"line2d_14\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.28125\" xlink:href=\"#m1b08968824\" y=\"58.837002\"/>\n      </g>\n     </g>\n     <g id=\"text_15\">\n      <!-- 14 -->\n      <g style=\"fill:#d62728;\" transform=\"translate(30.55625 62.63622)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-34\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_9\">\n     <g id=\"line2d_15\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.28125\" xlink:href=\"#m1b08968824\" y=\"25.522807\"/>\n      </g>\n     </g>\n     <g id=\"text_16\">\n      <!-- 16 -->\n      <g style=\"fill:#d62728;\" transform=\"translate(30.55625 29.322026)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-36\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_17\">\n     <!-- sales -->\n     <g style=\"fill:#d62728;\" transform=\"translate(22.396875 181.878125)rotate(-90)scale(0.2 -0.2)\">\n      <defs>\n       <path d=\"M 2834 3397 \nL 2834 2853 \nQ 2591 2978 2328 3040 \nQ 2066 3103 1784 3103 \nQ 1356 3103 1142 2972 \nQ 928 2841 928 2578 \nQ 928 2378 1081 2264 \nQ 1234 2150 1697 2047 \nL 1894 2003 \nQ 2506 1872 2764 1633 \nQ 3022 1394 3022 966 \nQ 3022 478 2636 193 \nQ 2250 -91 1575 -91 \nQ 1294 -91 989 -36 \nQ 684 19 347 128 \nL 347 722 \nQ 666 556 975 473 \nQ 1284 391 1588 391 \nQ 1994 391 2212 530 \nQ 2431 669 2431 922 \nQ 2431 1156 2273 1281 \nQ 2116 1406 1581 1522 \nL 1381 1569 \nQ 847 1681 609 1914 \nQ 372 2147 372 2553 \nQ 372 3047 722 3315 \nQ 1072 3584 1716 3584 \nQ 2034 3584 2315 3537 \nQ 2597 3491 2834 3397 \nz\n\" id=\"DejaVuSans-73\" transform=\"scale(0.015625)\"/>\n       <path d=\"M 2194 1759 \nQ 1497 1759 1228 1600 \nQ 959 1441 959 1056 \nQ 959 750 1161 570 \nQ 1363 391 1709 391 \nQ 2188 391 2477 730 \nQ 2766 1069 2766 1631 \nL 2766 1759 \nL 2194 1759 \nz\nM 3341 1997 \nL 3341 0 \nL 2766 0 \nL 2766 531 \nQ 2569 213 2275 61 \nQ 1981 -91 1556 -91 \nQ 1019 -91 701 211 \nQ 384 513 384 1019 \nQ 384 1609 779 1909 \nQ 1175 2209 1959 2209 \nL 2766 2209 \nL 2766 2266 \nQ 2766 2663 2505 2880 \nQ 2244 3097 1772 3097 \nQ 1472 3097 1187 3025 \nQ 903 2953 641 2809 \nL 641 3341 \nQ 956 3463 1253 3523 \nQ 1550 3584 1831 3584 \nQ 2591 3584 2966 3190 \nQ 3341 2797 3341 1997 \nz\n\" id=\"DejaVuSans-61\" transform=\"scale(0.015625)\"/>\n       <path d=\"M 603 4863 \nL 1178 4863 \nL 1178 0 \nL 603 0 \nL 603 4863 \nz\n\" id=\"DejaVuSans-6c\" transform=\"scale(0.015625)\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-73\"/>\n      <use x=\"52.099609\" xlink:href=\"#DejaVuSans-61\"/>\n      <use x=\"113.378906\" xlink:href=\"#DejaVuSans-6c\"/>\n      <use x=\"141.162109\" xlink:href=\"#DejaVuSans-65\"/>\n      <use x=\"202.685547\" xlink:href=\"#DejaVuSans-73\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_16\">\n    <path clip-path=\"url(#pa9ddc356ae)\" d=\"M 110.140341 227.78756 \nL 114.400774 253.962998 \nL 118.661208 258.722169 \nL 122.921641 249.203828 \nL 127.182075 268.24051 \nL 131.442508 261.101754 \nL 135.702942 270.620096 \nL 144.223809 261.101754 \nL 148.484243 258.722169 \nL 152.744676 263.48134 \nL 157.00511 256.342584 \nL 161.265543 251.583413 \nL 165.525977 265.860925 \nL 169.78641 232.54673 \nL 174.046844 275.379266 \nL 178.307277 242.065072 \nL 182.567711 237.305901 \nL 186.828144 230.167145 \nL 191.088578 258.722169 \nL 195.349011 239.685486 \nL 199.609445 251.583413 \nL 203.869878 203.991707 \nL 208.130312 225.407974 \nL 212.390745 251.583413 \nL 216.651179 272.999681 \nL 220.911612 280.138437 \nL 225.172046 239.685486 \nL 229.432479 237.305901 \nL 233.692913 263.48134 \nL 237.953346 258.722169 \nL 242.21378 237.305901 \nL 246.474213 261.101754 \nL 250.734647 268.24051 \nL 254.99508 244.444657 \nL 259.255514 263.48134 \nL 263.515948 263.48134 \nL 267.776381 265.860925 \nL 272.036815 253.962998 \nL 276.297248 258.722169 \nL 280.557682 242.065072 \nL 284.818115 211.130463 \nL 289.078549 168.297927 \nL 293.338982 268.24051 \nL 297.599416 239.685486 \nL 301.859849 218.269219 \nL 306.120283 215.889633 \nL 310.380716 256.342584 \nL 314.64115 261.101754 \nL 318.901583 230.167145 \nL 323.162017 280.138437 \nL 327.42245 263.48134 \nL 331.682884 249.203828 \nL 335.943317 244.444657 \nL 340.203751 253.962998 \nL 344.464184 265.860925 \nL 348.724618 258.722169 \nL 352.985051 256.342584 \nL 357.245485 242.065072 \nL 365.766352 261.101754 \nL 370.026785 277.758852 \nL 374.287219 263.48134 \nL 378.547652 275.379266 \nL 382.808086 256.342584 \nL 387.068519 282.518022 \nL 391.328953 265.860925 \nL 395.589387 215.889633 \nL 399.84982 232.54673 \nL 404.110254 253.962998 \nL 408.370687 220.648804 \nL 412.631121 234.926316 \nL 416.891554 256.342584 \nL 421.151988 280.138437 \nL 425.412421 244.444657 \nL 429.672855 227.78756 \nL 433.933288 244.444657 \nL 438.193722 272.999681 \nL 442.454155 268.24051 \nL 446.714589 272.999681 \nL 450.975022 256.342584 \nL 455.235456 265.860925 \nL 459.495889 284.897608 \nL 463.756323 244.444657 \nL 468.016756 251.583413 \nL 472.27719 244.444657 \nL 476.537623 268.24051 \nL 485.05849 263.48134 \nL 489.318924 272.999681 \nL 493.579357 261.101754 \nL 497.839791 277.758852 \nL 502.100224 275.379266 \nL 506.360658 265.860925 \nL 510.621091 142.122488 \nL 514.881525 244.444657 \nL 523.402392 263.48134 \nL 527.662826 213.510048 \nL 531.923259 251.583413 \nL 536.183693 275.379266 \nL 540.444126 263.48134 \nL 544.70456 282.518022 \nL 553.225427 249.203828 \nL 557.48586 270.620096 \nL 561.746294 265.860925 \nL 566.006727 265.860925 \nL 570.267161 232.54673 \nL 574.527594 263.48134 \nL 578.788028 253.962998 \nL 583.048461 256.342584 \nL 587.308895 268.24051 \nL 591.569328 268.24051 \nL 595.829762 265.860925 \nL 600.090195 265.860925 \nL 604.350629 232.54673 \nL 608.611062 253.962998 \nL 612.871496 272.999681 \nL 617.131929 232.54673 \nL 621.392363 244.444657 \nL 625.652796 258.722169 \nL 629.91323 253.962998 \nL 634.173663 244.444657 \nL 638.434097 227.78756 \nL 642.69453 263.48134 \nL 646.954964 234.926316 \nL 651.215398 258.722169 \nL 655.475831 244.444657 \nL 659.736265 256.342584 \nL 663.996698 232.54673 \nL 668.257132 251.583413 \nL 672.517565 251.583413 \nL 676.777999 277.758852 \nL 681.038432 277.758852 \nL 685.298866 256.342584 \nL 689.559299 251.583413 \nL 693.819733 265.860925 \nL 698.080166 282.518022 \nL 706.601033 277.758852 \nL 710.861467 272.999681 \nL 715.1219 282.518022 \nL 719.382334 251.583413 \nL 723.642767 263.48134 \nL 727.903201 270.620096 \nL 732.163634 246.824242 \nL 736.424068 218.269219 \nL 740.684501 265.860925 \nL 744.944935 249.203828 \nL 749.205368 246.824242 \nL 753.465802 234.926316 \nL 757.726235 237.305901 \nL 761.986669 261.101754 \nL 766.247102 268.24051 \nL 770.507536 265.860925 \nL 774.76797 258.722169 \nL 779.028403 272.999681 \nL 783.288837 251.583413 \nL 787.54927 275.379266 \nL 791.809704 270.620096 \nL 796.070137 261.101754 \nL 800.330571 284.897608 \nL 804.591004 261.101754 \nL 808.851438 261.101754 \nL 813.111871 237.305901 \nL 817.372305 251.583413 \nL 821.632738 256.342584 \nL 825.893172 239.685486 \nL 830.153605 251.583413 \nL 834.414039 270.620096 \nL 838.674472 249.203828 \nL 842.934906 270.620096 \nL 847.195339 256.342584 \nL 851.455773 261.101754 \nL 855.716206 244.444657 \nL 859.97664 268.24051 \nL 864.237073 268.24051 \nL 868.497507 256.342584 \nL 872.75794 261.101754 \nL 877.018374 244.444657 \nL 881.278807 263.48134 \nL 885.539241 253.962998 \nL 889.799674 261.101754 \nL 894.060108 232.54673 \nL 898.320541 258.722169 \nL 902.580975 261.101754 \nL 906.841409 272.999681 \nL 911.101842 275.379266 \nL 915.362276 289.656778 \nL 919.622709 275.379266 \nL 928.143576 261.101754 \nL 932.40401 258.722169 \nL 936.664443 282.518022 \nL 940.924877 270.620096 \nL 945.18531 272.999681 \nL 949.445744 256.342584 \nL 953.706177 246.824242 \nL 957.966611 73.114514 \nL 962.227044 263.48134 \nL 966.487478 263.48134 \nL 970.747911 277.758852 \nL 975.008345 258.722169 \nL 979.268778 292.036364 \nL 983.529212 292.036364 \nL 987.789645 289.656778 \nL 992.050079 272.999681 \nL 996.310512 272.999681 \nL 1000.570946 258.722169 \nL 1004.831379 246.824242 \nL 1009.091813 256.342584 \nL 1013.352246 277.758852 \nL 1017.61268 265.860925 \nL 1021.873113 263.48134 \nL 1026.133547 263.48134 \nL 1030.393981 272.999681 \nL 1034.654414 246.824242 \nL 1038.914848 242.065072 \nL 1043.175281 223.028389 \nL 1047.435715 284.897608 \nL 1051.696148 261.101754 \nL 1055.956582 249.203828 \nL 1060.217015 244.444657 \nL 1064.477449 237.305901 \nL 1068.737882 270.620096 \nL 1072.998316 261.101754 \nL 1077.258749 215.889633 \nL 1081.519183 249.203828 \nL 1085.779616 244.444657 \nL 1090.04005 242.065072 \nL 1094.300483 253.962998 \nL 1098.560917 237.305901 \nL 1102.82135 256.342584 \nL 1107.081784 270.620096 \nL 1111.342217 253.962998 \nL 1115.602651 253.962998 \nL 1119.863084 275.379266 \nL 1124.123518 272.999681 \nL 1128.383951 275.379266 \nL 1132.644385 268.24051 \nL 1136.904818 270.620096 \nL 1141.165252 268.24051 \nL 1145.425685 280.138437 \nL 1149.686119 265.860925 \nL 1153.946552 268.24051 \nL 1158.206986 292.036364 \nL 1162.46742 268.24051 \nL 1166.727853 272.999681 \nL 1170.988287 287.277193 \nL 1175.24872 272.999681 \nL 1179.509154 215.889633 \nL 1183.769587 277.758852 \nL 1188.030021 272.999681 \nL 1192.290454 196.852951 \nL 1196.550888 20.763636 \nL 1200.811321 225.407974 \nL 1205.071755 265.860925 \nL 1209.332188 287.277193 \nL 1213.592622 292.036364 \nL 1217.853055 289.656778 \nL 1222.113489 289.656778 \nL 1230.634356 270.620096 \nL 1234.894789 256.342584 \nL 1239.155223 268.24051 \nL 1243.415656 263.48134 \nL 1247.67609 275.379266 \nL 1251.936523 272.999681 \nL 1256.196957 265.860925 \nL 1260.45739 284.897608 \nL 1264.717824 289.656778 \nL 1268.978257 277.758852 \nL 1273.238691 217.079426 \nL 1273.238691 217.079426 \n\" style=\"fill:none;stroke:#d62728;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path d=\"M 50.28125 305.6 \nL 50.28125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path d=\"M 1367.18125 305.6 \nL 1367.18125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path d=\"M 50.28125 305.6 \nL 1367.18125 305.6 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path d=\"M 50.28125 7.2 \nL 1367.18125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n  </g>\n  <g id=\"axes_2\">\n   <g id=\"matplotlib.axis_3\">\n    <g id=\"ytick_10\">\n     <g id=\"line2d_17\">\n      <defs>\n       <path d=\"M 0 0 \nL 3.5 0 \n\" id=\"m39c970ba1a\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1367.18125\" xlink:href=\"#m39c970ba1a\" y=\"298.818182\"/>\n      </g>\n     </g>\n     <g id=\"text_18\">\n      <!-- 1.575 -->\n      <g style=\"fill:#1f77b4;\" transform=\"translate(1374.18125 302.617401)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 684 794 \nL 1344 794 \nL 1344 0 \nL 684 0 \nL 684 794 \nz\n\" id=\"DejaVuSans-2e\" transform=\"scale(0.015625)\"/>\n        <path d=\"M 525 4666 \nL 3525 4666 \nL 3525 4397 \nL 1831 0 \nL 1172 0 \nL 2766 4134 \nL 525 4134 \nL 525 4666 \nz\n\" id=\"DejaVuSans-37\" transform=\"scale(0.015625)\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-37\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_11\">\n     <g id=\"line2d_18\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1367.18125\" xlink:href=\"#m39c970ba1a\" y=\"264.909091\"/>\n      </g>\n     </g>\n     <g id=\"text_19\">\n      <!-- 1.600 -->\n      <g style=\"fill:#1f77b4;\" transform=\"translate(1374.18125 268.70831)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-36\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_12\">\n     <g id=\"line2d_19\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1367.18125\" xlink:href=\"#m39c970ba1a\" y=\"231\"/>\n      </g>\n     </g>\n     <g id=\"text_20\">\n      <!-- 1.625 -->\n      <g style=\"fill:#1f77b4;\" transform=\"translate(1374.18125 234.799219)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-36\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-32\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_13\">\n     <g id=\"line2d_20\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1367.18125\" xlink:href=\"#m39c970ba1a\" y=\"197.090909\"/>\n      </g>\n     </g>\n     <g id=\"text_21\">\n      <!-- 1.650 -->\n      <g style=\"fill:#1f77b4;\" transform=\"translate(1374.18125 200.890128)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-36\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_14\">\n     <g id=\"line2d_21\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1367.18125\" xlink:href=\"#m39c970ba1a\" y=\"163.181818\"/>\n      </g>\n     </g>\n     <g id=\"text_22\">\n      <!-- 1.675 -->\n      <g style=\"fill:#1f77b4;\" transform=\"translate(1374.18125 166.981037)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-36\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-37\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_15\">\n     <g id=\"line2d_22\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1367.18125\" xlink:href=\"#m39c970ba1a\" y=\"129.272727\"/>\n      </g>\n     </g>\n     <g id=\"text_23\">\n      <!-- 1.700 -->\n      <g style=\"fill:#1f77b4;\" transform=\"translate(1374.18125 133.071946)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-37\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_16\">\n     <g id=\"line2d_23\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1367.18125\" xlink:href=\"#m39c970ba1a\" y=\"95.363636\"/>\n      </g>\n     </g>\n     <g id=\"text_24\">\n      <!-- 1.725 -->\n      <g style=\"fill:#1f77b4;\" transform=\"translate(1374.18125 99.162855)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-37\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-32\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_17\">\n     <g id=\"line2d_24\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1367.18125\" xlink:href=\"#m39c970ba1a\" y=\"61.454545\"/>\n      </g>\n     </g>\n     <g id=\"text_25\">\n      <!-- 1.750 -->\n      <g style=\"fill:#1f77b4;\" transform=\"translate(1374.18125 65.253764)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-37\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-30\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_18\">\n     <g id=\"line2d_25\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"1367.18125\" xlink:href=\"#m39c970ba1a\" y=\"27.545455\"/>\n      </g>\n     </g>\n     <g id=\"text_26\">\n      <!-- 1.775 -->\n      <g style=\"fill:#1f77b4;\" transform=\"translate(1374.18125 31.344673)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-31\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-37\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-37\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-35\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_27\">\n     <!-- prices -->\n     <g style=\"fill:#1f77b4;\" transform=\"translate(1422.00625 186.498437)rotate(-90)scale(0.2 -0.2)\">\n      <defs>\n       <path d=\"M 1159 525 \nL 1159 -1331 \nL 581 -1331 \nL 581 3500 \nL 1159 3500 \nL 1159 2969 \nQ 1341 3281 1617 3432 \nQ 1894 3584 2278 3584 \nQ 2916 3584 3314 3078 \nQ 3713 2572 3713 1747 \nQ 3713 922 3314 415 \nQ 2916 -91 2278 -91 \nQ 1894 -91 1617 61 \nQ 1341 213 1159 525 \nz\nM 3116 1747 \nQ 3116 2381 2855 2742 \nQ 2594 3103 2138 3103 \nQ 1681 3103 1420 2742 \nQ 1159 2381 1159 1747 \nQ 1159 1113 1420 752 \nQ 1681 391 2138 391 \nQ 2594 391 2855 752 \nQ 3116 1113 3116 1747 \nz\n\" id=\"DejaVuSans-70\" transform=\"scale(0.015625)\"/>\n       <path d=\"M 2631 2963 \nQ 2534 3019 2420 3045 \nQ 2306 3072 2169 3072 \nQ 1681 3072 1420 2755 \nQ 1159 2438 1159 1844 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1341 3275 1631 3429 \nQ 1922 3584 2338 3584 \nQ 2397 3584 2469 3576 \nQ 2541 3569 2628 3553 \nL 2631 2963 \nz\n\" id=\"DejaVuSans-72\" transform=\"scale(0.015625)\"/>\n       <path d=\"M 603 3500 \nL 1178 3500 \nL 1178 0 \nL 603 0 \nL 603 3500 \nz\nM 603 4863 \nL 1178 4863 \nL 1178 4134 \nL 603 4134 \nL 603 4863 \nz\n\" id=\"DejaVuSans-69\" transform=\"scale(0.015625)\"/>\n       <path d=\"M 3122 3366 \nL 3122 2828 \nQ 2878 2963 2633 3030 \nQ 2388 3097 2138 3097 \nQ 1578 3097 1268 2742 \nQ 959 2388 959 1747 \nQ 959 1106 1268 751 \nQ 1578 397 2138 397 \nQ 2388 397 2633 464 \nQ 2878 531 3122 666 \nL 3122 134 \nQ 2881 22 2623 -34 \nQ 2366 -91 2075 -91 \nQ 1284 -91 818 406 \nQ 353 903 353 1747 \nQ 353 2603 823 3093 \nQ 1294 3584 2113 3584 \nQ 2378 3584 2631 3529 \nQ 2884 3475 3122 3366 \nz\n\" id=\"DejaVuSans-63\" transform=\"scale(0.015625)\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-70\"/>\n      <use x=\"63.476562\" xlink:href=\"#DejaVuSans-72\"/>\n      <use x=\"104.589844\" xlink:href=\"#DejaVuSans-69\"/>\n      <use x=\"132.373047\" xlink:href=\"#DejaVuSans-63\"/>\n      <use x=\"187.353516\" xlink:href=\"#DejaVuSans-65\"/>\n      <use x=\"248.876953\" xlink:href=\"#DejaVuSans-73\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_26\">\n    <path clip-path=\"url(#pa9ddc356ae)\" d=\"M 110.140341 292.036364 \nL 118.661208 292.036364 \nL 122.921641 156.4 \nL 676.777999 156.4 \nL 681.038432 20.763636 \nL 1307.322159 20.763636 \nL 1307.322159 20.763636 \n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"patch_7\">\n    <path d=\"M 50.28125 305.6 \nL 50.28125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_8\">\n    <path d=\"M 1367.18125 305.6 \nL 1367.18125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_9\">\n    <path d=\"M 50.28125 305.6 \nL 1367.18125 305.6 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_10\">\n    <path d=\"M 50.28125 7.2 \nL 1367.18125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"pa9ddc356ae\">\n   <rect height=\"298.4\" width=\"1316.9\" x=\"50.28125\" y=\"7.2\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "text/plain": [
       "<Figure size 1440x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "row_name = 'FOODS_3_015_CA_1_validation'\n",
    "calendar_history = calendar.iloc[:target_day - 1].copy()\n",
    "calendar_history[\"index_group\"] = calendar_history.index\n",
    "index_group_by_week = [list(value) for key, value in calendar_history.groupby(\"wm_yr_wk\")[\"index_group\"]]\n",
    "group_indices = np.zeros(len(d_cols), dtype=np.int)\n",
    "for group_index, group in enumerate(index_group_by_week):\n",
    "    for row_id in group:\n",
    "        group_indices[row_id] = int(group_index)\n",
    "week_sale = sales.loc[sales[\"id\"] == row_name][d_cols].groupby(group_indices, axis=1).mean().values[0]\n",
    "zip_result = list(zip(sell_prices[\"item_id\"].values, sell_prices[\"store_id\"].values))\n",
    "item_store_id = list(map(lambda x: x[0] + \"_\" + x[1] + \"_validation\", zip_result))\n",
    "sell_prices[\"item_store_id\"] = item_store_id\n",
    "week_price = sell_prices.loc[sell_prices[\"item_store_id\"] == row_name].groupby(\"wm_yr_wk\").mean()\n",
    "\n",
    "fig, ax1 = plt.subplots()\n",
    "\n",
    "color = 'tab:red'\n",
    "ax1.set_xlabel('week', fontsize=20)\n",
    "ax1.set_ylabel('sales', color=color, fontsize=20)\n",
    "ax1.plot(np.arange(len(week_sale)), week_sale, color=color)\n",
    "ax1.tick_params(axis='y', labelcolor=color)\n",
    "\n",
    "ax2 = ax1.twinx()\n",
    "color = 'tab:blue'\n",
    "ax2.set_ylabel('prices', color=color, fontsize=20)\n",
    "ax2.plot(np.arange(len(week_price)), week_price, color=color)\n",
    "ax2.tick_params(axis='y', labelcolor=color)\n",
    "\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "与预想的不同，我们发现商品的价格并没有太频繁地波动，无法观察到商品价格与销量的明显关系。其他序列也是类似的情况。因此，我们暂时不考虑将价格信息加入到特征当中。读者可以思考一下如何使用价格信息构造出合理的特征。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最后，我们将所有的特征连接到一起。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>la_1</th>\n",
       "      <th>la_2</th>\n",
       "      <th>la_3</th>\n",
       "      <th>la_4</th>\n",
       "      <th>la_5</th>\n",
       "      <th>la_6</th>\n",
       "      <th>la_7</th>\n",
       "      <th>la_14</th>\n",
       "      <th>la_21</th>\n",
       "      <th>la_28</th>\n",
       "      <th>...</th>\n",
       "      <th>p_5</th>\n",
       "      <th>p_6</th>\n",
       "      <th>p_7</th>\n",
       "      <th>p_8</th>\n",
       "      <th>same_month_mean</th>\n",
       "      <th>event_name_1_mean</th>\n",
       "      <th>event_name_2_mean</th>\n",
       "      <th>event_type_1_mean</th>\n",
       "      <th>event_type_2_mean</th>\n",
       "      <th>snap_mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>...</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.321839</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.316446</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.114943</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.254871</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.160920</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.153546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>29.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>...</td>\n",
       "      <td>11.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>17.0</td>\n",
       "      <td>17.0</td>\n",
       "      <td>1.718391</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.713952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>24.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>...</td>\n",
       "      <td>5.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.996103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.489478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>...</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.568966</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.289945</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>25.0</td>\n",
       "      <td>...</td>\n",
       "      <td>11.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>0.959770</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.694466</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>...</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.287356</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.328917</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>...</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>0.793103</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.681995</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 26 columns</p>\n",
       ""
      ],
      "text/plain": [
       "       la_1  la_2  la_3  la_4  la_5  la_6  la_7  la_14  la_21  la_28  ...  \\\n",
       "0       1.0   2.0   2.0   5.0   6.0   7.0   8.0   13.0   25.0   27.0  ...   \n",
       "1       0.0   0.0   0.0   0.0   1.0   1.0   1.0    1.0    1.0    2.0  ...   \n",
       "2       1.0   2.0   3.0   3.0   4.0   5.0   6.0   14.0   15.0   16.0  ...   \n",
       "3       2.0   9.0  12.0  13.0  13.0  14.0  18.0   29.0   45.0   51.0  ...   \n",
       "4       4.0   6.0   8.0  10.0  11.0  12.0  12.0   20.0   24.0   38.0  ...   \n",
       "...     ...   ...   ...   ...   ...   ...   ...    ...    ...    ...  ...   \n",
       "30485   1.0   1.0   1.0   2.0   2.0   2.0   2.0    6.0    6.0    6.0  ...   \n",
       "30486   0.0   1.0   1.0   1.0   1.0   1.0   1.0    3.0    7.0    9.0  ...   \n",
       "30487   0.0   1.0   1.0   1.0   2.0   2.0   4.0   11.0   22.0   25.0  ...   \n",
       "30488   3.0   4.0   7.0   7.0   8.0   8.0   8.0   13.0   22.0   26.0  ...   \n",
       "30489   0.0   0.0   0.0   0.0   0.0   0.0   0.0    0.0    8.0   30.0  ...   \n",
       "\n",
       "        p_5   p_6   p_7   p_8  same_month_mean  event_name_1_mean  \\\n",
       "0       3.0   3.0   3.0   3.0         0.321839                NaN   \n",
       "1       1.0   1.0   2.0   2.0         0.114943                NaN   \n",
       "2       1.0   1.0   2.0   2.0         0.160920                NaN   \n",
       "3      11.0  14.0  17.0  17.0         1.718391                NaN   \n",
       "4       5.0   7.0   9.0  10.0         0.666667                NaN   \n",
       "...     ...   ...   ...   ...              ...                ...   \n",
       "30485   2.0   2.0   3.0   3.0         0.666667                NaN   \n",
       "30486   3.0   3.0   3.0   3.0         0.568966                NaN   \n",
       "30487  11.0  11.0  12.0  13.0         0.959770                NaN   \n",
       "30488   5.0   5.0   5.0   7.0         0.287356                NaN   \n",
       "30489  11.0  12.0  12.0  14.0         0.793103                NaN   \n",
       "\n",
       "       event_name_2_mean  event_type_1_mean  event_type_2_mean  snap_mean  \n",
       "0                    NaN                NaN                NaN   0.316446  \n",
       "1                    NaN                NaN                NaN   0.254871  \n",
       "2                    NaN                NaN                NaN   0.153546  \n",
       "3                    NaN                NaN                NaN   1.713952  \n",
       "4                    NaN                NaN                NaN   0.996103  \n",
       "...                  ...                ...                ...        ...  \n",
       "30485                NaN                NaN                NaN   0.489478  \n",
       "30486                NaN                NaN                NaN   0.289945  \n",
       "30487                NaN                NaN                NaN   0.694466  \n",
       "30488                NaN                NaN                NaN   0.328917  \n",
       "30489                NaN                NaN                NaN   0.681995  \n",
       "\n",
       "[30490 rows x 26 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_all_features(target_day, predict_distance):\n",
    "    return pd.concat([get_history_features(target_day, predict_distance),\n",
    "                      get_calendar_features(target_day, predict_distance)], axis=1)\n",
    "\n",
    "get_all_features(target_day, predict_distance)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "注意，以上我们只是计算了第1914天的数据的特征。这只些特征只能用来预测1914天的销量，也就是说，上表实际上是我们的测试数据。\n",
    "\n",
    "为了构造训练数据，我们对1914天之前的日期进行同样的特征计算操作，并附上它们的当天销量作为数据标签。下面我们来详细说明。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 构造训练数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在时间序列的问题中，训练数据的构造一般使用滑窗的方式构造。以本案例为例，训练数据提供了长度为1913的历史序列。假设我们建模了一个单步模型，只预测下一天，那么，基于原始数据中的每一条序列，我们最多可以构造出1913条训练样本。但在这里面，时间靠前的那些样本，可以利用的历史信息就很少。因此，我们一般还要预留一个特征窗口，保证每条样本都可以抽取足够的信息。假设我们要保证每条样本至少有56天的历史信息，那么我们就需要从第57天开始滑窗。这一共可以构造出1857条样本。如果要需要预测的步长变大，比如预测后天的销量，那可以构造的样本也会变少一条。综上，对于一条时间序列，我们可以构造出 $H - f - l + 1$ 的样本，其中，H是序列的长度(本案例中为1913)，f是每条样本的最小历史信息（本案例中为56），l是预测的步长（即predict_distance）。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "下面，我们来构造训练数据集。为了节约时间和内存，这里我们只选用第1914的前50天构造训练数据。读者可根据自己的情况选取更多的日期进行构造。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "training_data_days = 50"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "pycharm": {
     "is_executing": false
    },
    "scrolled": true,
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>la_1</th>\n",
       "      <th>la_2</th>\n",
       "      <th>la_3</th>\n",
       "      <th>la_4</th>\n",
       "      <th>la_5</th>\n",
       "      <th>la_6</th>\n",
       "      <th>la_7</th>\n",
       "      <th>la_14</th>\n",
       "      <th>la_21</th>\n",
       "      <th>la_28</th>\n",
       "      <th>...</th>\n",
       "      <th>p_5</th>\n",
       "      <th>p_6</th>\n",
       "      <th>p_7</th>\n",
       "      <th>p_8</th>\n",
       "      <th>same_month_mean</th>\n",
       "      <th>event_name_1_mean</th>\n",
       "      <th>event_name_2_mean</th>\n",
       "      <th>event_type_1_mean</th>\n",
       "      <th>event_type_2_mean</th>\n",
       "      <th>snap_mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>51.0</td>\n",
       "      <td>52.0</td>\n",
       "      <td>53.0</td>\n",
       "      <td>53.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>67.0</td>\n",
       "      <td>71.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>...</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.243750</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.289431</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.125000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.265041</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>31.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>34.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.175000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.138211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>103.0</td>\n",
       "      <td>103.0</td>\n",
       "      <td>104.0</td>\n",
       "      <td>104.0</td>\n",
       "      <td>104.0</td>\n",
       "      <td>104.0</td>\n",
       "      <td>110.0</td>\n",
       "      <td>123.0</td>\n",
       "      <td>131.0</td>\n",
       "      <td>153.0</td>\n",
       "      <td>...</td>\n",
       "      <td>23.0</td>\n",
       "      <td>31.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>1.681250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.720325</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>65.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>65.0</td>\n",
       "      <td>66.0</td>\n",
       "      <td>68.0</td>\n",
       "      <td>69.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>78.0</td>\n",
       "      <td>85.0</td>\n",
       "      <td>94.0</td>\n",
       "      <td>...</td>\n",
       "      <td>7.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>0.625000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.907317</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.664740</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.489080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>...</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.572254</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.290172</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>...</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.965318</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.695008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>4.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>...</td>\n",
       "      <td>9.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>0.271676</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.326833</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>...</td>\n",
       "      <td>10.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>0.797688</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.682527</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1524500 rows × 26 columns</p>\n",
       ""
      ],
      "text/plain": [
       "        la_1   la_2   la_3   la_4   la_5   la_6   la_7  la_14  la_21  la_28  \\\n",
       "0       51.0   52.0   53.0   53.0   55.0   55.0   57.0   67.0   71.0   80.0   \n",
       "1       10.0   10.0   11.0   11.0   11.0   11.0   11.0   12.0   14.0   15.0   \n",
       "2       31.0   31.0   31.0   31.0   31.0   31.0   31.0   32.0   34.0   40.0   \n",
       "3      103.0  103.0  104.0  104.0  104.0  104.0  110.0  123.0  131.0  153.0   \n",
       "4       65.0   65.0   65.0   66.0   68.0   69.0   70.0   78.0   85.0   94.0   \n",
       "...      ...    ...    ...    ...    ...    ...    ...    ...    ...    ...   \n",
       "30485    1.0    1.0    2.0    2.0    2.0    2.0    2.0    6.0    6.0    6.0   \n",
       "30486    1.0    1.0    1.0    1.0    1.0    1.0    1.0    4.0    8.0    9.0   \n",
       "30487    1.0    1.0    1.0    2.0    2.0    4.0    4.0   13.0   23.0   26.0   \n",
       "30488    4.0    7.0    7.0    8.0    8.0    8.0    9.0   15.0   23.0   30.0   \n",
       "30489    0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0    9.0   35.0   \n",
       "\n",
       "       ...   p_5   p_6   p_7   p_8  same_month_mean  event_name_1_mean  \\\n",
       "0      ...   3.0   3.0   3.0   3.0         0.243750                NaN   \n",
       "1      ...   0.0   0.0   0.0   0.0         0.125000                NaN   \n",
       "2      ...   2.0   2.0   2.0   2.0         0.175000                NaN   \n",
       "3      ...  23.0  31.0  33.0  33.0         1.681250                NaN   \n",
       "4      ...   7.0  10.0  11.0  14.0         0.625000                NaN   \n",
       "...    ...   ...   ...   ...   ...              ...                ...   \n",
       "30485  ...   0.0   0.0   1.0   2.0         0.664740                NaN   \n",
       "30486  ...   2.0   2.0   2.0   2.0         0.572254                NaN   \n",
       "30487  ...   4.0   5.0   7.0   7.0         0.965318                NaN   \n",
       "30488  ...   9.0  12.0  14.0  14.0         0.271676                NaN   \n",
       "30489  ...  10.0  14.0  14.0  14.0         0.797688                NaN   \n",
       "\n",
       "       event_name_2_mean  event_type_1_mean  event_type_2_mean  snap_mean  \n",
       "0                    NaN                NaN                NaN   0.289431  \n",
       "1                    NaN                NaN                NaN   0.265041  \n",
       "2                    NaN                NaN                NaN   0.138211  \n",
       "3                    NaN                NaN                NaN   1.720325  \n",
       "4                    NaN                NaN                NaN   0.907317  \n",
       "...                  ...                ...                ...        ...  \n",
       "30485                NaN                NaN                NaN   0.489080  \n",
       "30486                NaN                NaN                NaN   0.290172  \n",
       "30487                NaN                NaN                NaN   0.695008  \n",
       "30488                NaN                NaN                NaN   0.326833  \n",
       "30489                NaN                NaN                NaN   0.682527  \n",
       "\n",
       "[1524500 rows x 26 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_data(target_day, predict_distance):\n",
    "    test_data = get_all_features(target_day, predict_distance)\n",
    "    train_data = pd.DataFrame(columns=test_data.columns)\n",
    "    for day in range(target_day - training_data_days - predict_distance + 1, target_day - predict_distance + 1):\n",
    "        train_data = pd.concat([train_data, get_all_features(day, predict_distance)])\n",
    "    return train_data, test_data\n",
    "\n",
    "train_data, test_data = get_data(target_day, predict_distance)\n",
    "train_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'data/sales_train_evaluation.csv'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-25-cb56e99b125a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlabel_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"data/sales_train_evaluation.csv\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mget_label\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtarget_day\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpredict_distance\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m     \u001b[0mtest_label\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlabel_data\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"d_\"\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtarget_day\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m     \u001b[0mtrain_label\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/anaconda/envs/lgbm/lib/python3.9/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)\u001b[0m\n\u001b[1;32m    686\u001b[0m     )\n\u001b[1;32m    687\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 688\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    689\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    690\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/anaconda/envs/lgbm/lib/python3.9/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m    452\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    453\u001b[0m     \u001b[0;31m# Create the parser.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 454\u001b[0;31m     \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfp_or_buf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    455\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    456\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/anaconda/envs/lgbm/lib/python3.9/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m    946\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    947\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 948\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    949\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    950\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/anaconda/envs/lgbm/lib/python3.9/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[0;34m(self, engine)\u001b[0m\n\u001b[1;32m   1178\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mengine\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"c\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1179\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"c\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1180\u001b[0;31m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCParserWrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1181\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1182\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"python\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/anaconda/envs/lgbm/lib/python3.9/site-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, src, **kwds)\u001b[0m\n\u001b[1;32m   2008\u001b[0m         \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"usecols\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0musecols\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2009\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2010\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparsers\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTextReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msrc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2011\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munnamed_cols\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munnamed_cols\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2012\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32mpandas/_libs/parsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader.__cinit__\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32mpandas/_libs/parsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader._setup_parser_source\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'data/sales_train_evaluation.csv'"
     ]
    }
   ],
   "source": [
    "label_data = pd.read_csv(\"data/sales_train_evaluation.csv\")\n",
    "\n",
    "def get_label(target_day, predict_distance):\n",
    "    test_label = label_data[\"d_\" + str(target_day)]\n",
    "    train_label = pd.DataFrame()\n",
    "    for day in range(target_day - training_data_days - predict_distance + 1, target_day - predict_distance + 1):\n",
    "        train_label = pd.concat([train_label, label_data[\"d_\" + str(day)]], axis=0)\n",
    "    return train_label, test_label\n",
    "\n",
    "train_label, test_label = get_label(target_day, predict_distance)\n",
    "train_label"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以上我们仅仅针对target_day=1914和preidct_distance=1构建了数据和标签，接下来的调参和训练过程也只针对第1914天的预测来进行。如果想要预测其他日期的销量，只需要更改get_data和get_label的参数即可。例如，想要预测第1915天的销量，只要调用get_data(1915, 2), get_label(1915, 2)来获得数据，并同样根据以下的过程进行模型训练（注意，由于训练数据中只有到1913天的数据，故在预测第1915天时需要设置predict_distance=2）。\n",
    "\n",
    "现在，我们已经准备好了训练数据和测试数据的特征和标签。接下来可以开始进行调参和训练了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 调参和训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先，导入LightGBM的python包。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "import lightgbm as lgb"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接着，创建训练训练数据和测试数据，代码如下。导入数据集之后，LightGBM会根据超参数，在数据集中加入一些额外的结构信息，例如，哪些特征属于类别特征、特征值离散化的边界等等。创建test_set时，我们需要设置reference=train_set，这使得test_set的结构信息与train_set保持一致。\n",
    "\n",
    "`feature_pre_filter`默认为`True`，lightgbm会根据min_data_in_leaf的值提前把一些不可能找到合法分割的特征过滤。由于后面会调整min_data_in_leaf，我们不希望反复构造数据集，我们将设置`feature_pre_filter=False`，这样`min_data_in_leaf`的选取不会影响到Dataset的构建。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "params = {\n",
    "    \"feature_pre_filter\": False\n",
    "}\n",
    "\n",
    "train_set = lgb.Dataset(train_data, label=train_label, params=params)\n",
    "test_set = lgb.Dataset(test_data, label=test_label, reference=train_set)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先使用一组默认的超参数训练一下，观察在测试集上的效果。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "pycharm": {
     "is_executing": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[LightGBM] [Warning] Auto-choosing row-wise multi-threading, the overhead of testing was 0.029278 seconds.\n",
      "You can set `force_row_wise=true` to remove the overhead.\n",
      "And if memory is not enough, you can set `force_col_wise=true`.\n",
      "[LightGBM] [Info] Total Bins 5362\n",
      "[LightGBM] [Info] Number of data points in the train set: 1524500, number of used features: 26\n",
      "[LightGBM] [Info] Start training from score 1.386903\n",
      "[1]\ttest's l2: 9.51999\n",
      "[2]\ttest's l2: 8.69717\n",
      "[3]\ttest's l2: 8.00812\n",
      "[4]\ttest's l2: 7.51519\n",
      "[5]\ttest's l2: 7.10917\n",
      "[6]\ttest's l2: 6.68865\n",
      "/anaconda/envs/lgbm/lib/python3.9/site-packages/lightgbm/basic.py:1286: UserWarning: Overriding the parameters from Reference Dataset.\n",
      "  warnings.warn('Overriding the parameters from Reference Dataset.')\n",
      "[7]\ttest's l2: 6.36185\n",
      "[8]\ttest's l2: 6.05805\n",
      "[9]\ttest's l2: 5.84763\n",
      "[10]\ttest's l2: 5.6607\n",
      "[11]\ttest's l2: 5.51427\n",
      "[12]\ttest's l2: 5.39317\n",
      "[13]\ttest's l2: 5.27912\n",
      "[14]\ttest's l2: 5.2151\n",
      "[15]\ttest's l2: 5.13299\n",
      "[16]\ttest's l2: 5.07651\n",
      "[17]\ttest's l2: 5.02146\n",
      "[18]\ttest's l2: 4.98771\n",
      "[19]\ttest's l2: 4.95112\n",
      "[20]\ttest's l2: 4.9146\n",
      "[21]\ttest's l2: 4.88293\n",
      "[22]\ttest's l2: 4.87606\n",
      "[23]\ttest's l2: 4.85511\n",
      "[24]\ttest's l2: 4.8383\n",
      "[25]\ttest's l2: 4.82343\n",
      "[26]\ttest's l2: 4.81114\n",
      "[27]\ttest's l2: 4.81652\n",
      "[28]\ttest's l2: 4.80626\n",
      "[29]\ttest's l2: 4.84541\n",
      "[30]\ttest's l2: 4.84165\n",
      "[31]\ttest's l2: 4.836\n",
      "[32]\ttest's l2: 4.86047\n",
      "[33]\ttest's l2: 4.85377\n",
      "[34]\ttest's l2: 4.86363\n",
      "[35]\ttest's l2: 4.88444\n",
      "[36]\ttest's l2: 4.8838\n",
      "[37]\ttest's l2: 4.88513\n",
      "[38]\ttest's l2: 4.89873\n",
      "[39]\ttest's l2: 4.91117\n",
      "[40]\ttest's l2: 4.93337\n",
      "[41]\ttest's l2: 4.935\n",
      "[42]\ttest's l2: 4.93207\n",
      "[43]\ttest's l2: 4.93709\n",
      "[44]\ttest's l2: 4.95475\n",
      "[45]\ttest's l2: 4.98352\n",
      "[46]\ttest's l2: 4.97828\n",
      "[47]\ttest's l2: 4.97451\n",
      "[48]\ttest's l2: 4.98266\n",
      "[49]\ttest's l2: 4.99527\n",
      "[50]\ttest's l2: 5.01857\n",
      "[51]\ttest's l2: 5.04136\n",
      "[52]\ttest's l2: 5.04658\n",
      "[53]\ttest's l2: 5.06654\n",
      "[54]\ttest's l2: 5.06782\n",
      "[55]\ttest's l2: 5.06872\n",
      "[56]\ttest's l2: 5.08244\n",
      "[57]\ttest's l2: 5.08719\n",
      "[58]\ttest's l2: 5.0909\n",
      "[59]\ttest's l2: 5.08594\n",
      "[60]\ttest's l2: 5.08547\n",
      "[61]\ttest's l2: 5.09077\n",
      "[62]\ttest's l2: 5.09068\n",
      "[63]\ttest's l2: 5.0881\n",
      "[64]\ttest's l2: 5.09774\n",
      "[65]\ttest's l2: 5.0968\n",
      "[66]\ttest's l2: 5.10116\n",
      "[67]\ttest's l2: 5.11786\n",
      "[68]\ttest's l2: 5.1195\n",
      "[69]\ttest's l2: 5.11949\n",
      "[70]\ttest's l2: 5.12322\n",
      "[71]\ttest's l2: 5.12531\n",
      "[72]\ttest's l2: 5.1398\n",
      "[73]\ttest's l2: 5.15936\n",
      "[74]\ttest's l2: 5.15954\n",
      "[75]\ttest's l2: 5.16313\n",
      "[76]\ttest's l2: 5.15651\n",
      "[77]\ttest's l2: 5.17902\n",
      "[78]\ttest's l2: 5.19379\n",
      "[79]\ttest's l2: 5.19385\n",
      "[80]\ttest's l2: 5.19377\n",
      "[81]\ttest's l2: 5.19362\n",
      "[82]\ttest's l2: 5.23666\n",
      "[83]\ttest's l2: 5.23693\n",
      "[84]\ttest's l2: 5.23201\n",
      "[85]\ttest's l2: 5.23057\n",
      "[86]\ttest's l2: 5.24912\n",
      "[87]\ttest's l2: 5.24602\n",
      "[88]\ttest's l2: 5.24199\n",
      "[89]\ttest's l2: 5.24754\n",
      "[90]\ttest's l2: 5.25453\n",
      "[91]\ttest's l2: 5.25291\n",
      "[92]\ttest's l2: 5.25389\n",
      "[93]\ttest's l2: 5.25572\n",
      "[94]\ttest's l2: 5.25983\n",
      "[95]\ttest's l2: 5.27332\n",
      "[96]\ttest's l2: 5.27119\n",
      "[97]\ttest's l2: 5.27511\n",
      "[98]\ttest's l2: 5.27583\n",
      "[99]\ttest's l2: 5.27272\n",
      "[100]\ttest's l2: 5.27666\n"
     ]
    }
   ],
   "source": [
    "params = {\n",
    "    'objective':'regression' #设置目标函数为regression，将会使用最小均方误差(MSE)作为目标函数。其他超参数保持默认。\n",
    "}\n",
    "model = lgb.train(params=params, train_set=train_set, valid_sets=[test_set], valid_names=[\"test\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以观察到，测试集上的均方误差（即l2损失值），先是随着训练迭代次数的增加而下降，在第30轮之后降到最低值，随后开始上升。这说明在30轮迭代之后模型开始过拟合训练数据，到了100轮迭代之后，均方误差已经上升了不少。因此，合适的迭代次数对模型的表现非常关键，此外GBDT还有其他非常重要的超参数。以下是GBDT的重要超参数以及它们在LightGBM中对应的名称。\n",
    "\n",
    "\n",
    "|超参数 | 作用 | 在LightGBM中的名称 |\n",
    "| --- | --- | --- |\n",
    "|迭代次数|即GBDT使用的决策树的数量。集成更多的决策树<br>可以提高模型的表示能力，但是也容易导致过拟合。 | num_trees |\n",
    "|学习率|即每棵决策树在最终模型中的权重。过大的学习率<br>会导致模型拟合效果不佳。但是使用小的学习率<br>通常需要更多的决策树。|learning_rate|\n",
    "|决策树规模|每棵决策树叶子的数量，使用更大的决策树可以提高拟合<br>能力，但是也容易导致过拟合。|num_leaves|"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "除了以上三个对模型表现有特别大影响的参数之外，LightGBM中还有一些重要的正则化参数。\n",
    "\n",
    "|LightGBM超参数 | 作用 |\n",
    "|---|---|\n",
    "|min_data_in_leaf|限制每片叶子上最少允许的数据量|\n",
    "|lambda_l2|叶子上预测值的l2正则权重|\n",
    "|bagging_fraction|每棵树训练采样的训练样本比例|\n",
    "|feature_fraction|每棵树训练采样的特征比例|"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "更多LightGBM的超参数及它们的作用可以参考\n",
    "https://lightgbm.readthedocs.io/en/latest/Parameters.html\n",
    "以及https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html\n",
    "。\n",
    "\n",
    "下面将展示如何通过手动的方法对LightGBM进行调参。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 手动调参\n",
    "\n",
    "调参时，将train_set中最后一天的数据作为验证集，其余作为训练集。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "num_data_per_day = test_data.shape[0]\n",
    "val_train_data = train_data.iloc[: -num_data_per_day]\n",
    "val_test_data = train_data.iloc[-num_data_per_day :]\n",
    "val_train_label = train_label[: -num_data_per_day]\n",
    "val_test_label = test_label[-num_data_per_day :]\n",
    "\n",
    "val_train_set = lgb.Dataset(data=val_train_data, label=val_train_label)\n",
    "val_test_set = lgb.Dataset(data=val_test_data, label=val_test_label, reference=val_train_set)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "params = {\n",
    "    'objective': 'regression',\n",
    "    'num_trees': 500,\n",
    "    'verbose': -1\n",
    "}\n",
    "early_stopping_rounds = 10"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为方便测试，先定义一个直接由超参数得到验证集上结果的函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "def get_eval_result(params):\n",
    "    evals_result = {}\n",
    "    model = lgb.train(params=params,\n",
    "                      train_set=val_train_set,\n",
    "                      valid_sets=[val_test_set],\n",
    "                      valid_names=[\"val_test\"],\n",
    "                      evals_result=evals_result,\n",
    "                      early_stopping_rounds=early_stopping_rounds,\n",
    "                      verbose_eval=False)\n",
    "    return evals_result[\"val_test\"][\"l2\"][model.best_iteration - 1], model.best_iteration"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先，固定学习率和最大迭代次数，调整其他超参数。为了保证能够得到测试集上最优迭代的结果，一开始固定的迭代次数会比较大，这里选取了num_trees=500。这里为了方便展示，我们仅以grid search的方式调整决策树的规模和叶子上最少允许的数据量。读者可自行加入其他超参数一起搜索。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "pycharm": {
     "is_executing": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda/envs/lgbm/lib/python3.9/site-packages/lightgbm/engine.py:151: UserWarning: Found `num_trees` in params. Will use it instead of argument\n",
      "  warnings.warn(\"Found `{}` in params. Will use it instead of argument\".format(alias))\n",
      "best l2 loss 4.026833 at iteration 30 with num_leaves = 4 and min_data_in_leaf = 20\n",
      "best l2 loss 4.067149 at iteration 25 with num_leaves = 4 and min_data_in_leaf = 50\n",
      "best l2 loss 4.057570 at iteration 28 with num_leaves = 4 and min_data_in_leaf = 100\n",
      "best l2 loss 4.106832 at iteration 29 with num_leaves = 4 and min_data_in_leaf = 200\n",
      "best l2 loss 4.095612 at iteration 29 with num_leaves = 4 and min_data_in_leaf = 300\n",
      "best l2 loss 4.115512 at iteration 27 with num_leaves = 4 and min_data_in_leaf = 400\n",
      "best l2 loss 4.141138 at iteration 26 with num_leaves = 4 and min_data_in_leaf = 500\n",
      "best l2 loss 4.242889 at iteration 35 with num_leaves = 4 and min_data_in_leaf = 1000\n",
      "best l2 loss 3.974465 at iteration 21 with num_leaves = 8 and min_data_in_leaf = 20\n",
      "best l2 loss 4.049687 at iteration 20 with num_leaves = 8 and min_data_in_leaf = 50\n",
      "best l2 loss 3.989644 at iteration 19 with num_leaves = 8 and min_data_in_leaf = 100\n",
      "best l2 loss 4.052305 at iteration 19 with num_leaves = 8 and min_data_in_leaf = 200\n",
      "best l2 loss 4.045178 at iteration 20 with num_leaves = 8 and min_data_in_leaf = 300\n",
      "best l2 loss 4.089436 at iteration 20 with num_leaves = 8 and min_data_in_leaf = 400\n",
      "best l2 loss 4.125816 at iteration 19 with num_leaves = 8 and min_data_in_leaf = 500\n",
      "best l2 loss 4.188680 at iteration 23 with num_leaves = 8 and min_data_in_leaf = 1000\n",
      "best l2 loss 4.043335 at iteration 28 with num_leaves = 16 and min_data_in_leaf = 20\n",
      "best l2 loss 4.177721 at iteration 21 with num_leaves = 16 and min_data_in_leaf = 50\n",
      "best l2 loss 4.106782 at iteration 19 with num_leaves = 16 and min_data_in_leaf = 100\n",
      "best l2 loss 4.151449 at iteration 19 with num_leaves = 16 and min_data_in_leaf = 200\n",
      "best l2 loss 4.175145 at iteration 19 with num_leaves = 16 and min_data_in_leaf = 300\n",
      "best l2 loss 4.154209 at iteration 20 with num_leaves = 16 and min_data_in_leaf = 400\n",
      "best l2 loss 4.184623 at iteration 22 with num_leaves = 16 and min_data_in_leaf = 500\n",
      "best l2 loss 4.385948 at iteration 20 with num_leaves = 16 and min_data_in_leaf = 1000\n",
      "best l2 loss 4.172127 at iteration 19 with num_leaves = 32 and min_data_in_leaf = 20\n",
      "best l2 loss 4.280202 at iteration 18 with num_leaves = 32 and min_data_in_leaf = 50\n",
      "best l2 loss 4.239086 at iteration 22 with num_leaves = 32 and min_data_in_leaf = 100\n",
      "best l2 loss 4.257670 at iteration 24 with num_leaves = 32 and min_data_in_leaf = 200\n",
      "best l2 loss 4.243145 at iteration 18 with num_leaves = 32 and min_data_in_leaf = 300\n",
      "best l2 loss 4.331785 at iteration 23 with num_leaves = 32 and min_data_in_leaf = 400\n",
      "best l2 loss 4.320206 at iteration 19 with num_leaves = 32 and min_data_in_leaf = 500\n",
      "best l2 loss 4.553613 at iteration 25 with num_leaves = 32 and min_data_in_leaf = 1000\n",
      "best l2 loss 4.192484 at iteration 21 with num_leaves = 64 and min_data_in_leaf = 20\n",
      "best l2 loss 4.388593 at iteration 16 with num_leaves = 64 and min_data_in_leaf = 50\n",
      "best l2 loss 4.329148 at iteration 18 with num_leaves = 64 and min_data_in_leaf = 100\n",
      "best l2 loss 4.364875 at iteration 21 with num_leaves = 64 and min_data_in_leaf = 200\n",
      "best l2 loss 4.353892 at iteration 22 with num_leaves = 64 and min_data_in_leaf = 300\n",
      "best l2 loss 4.397979 at iteration 19 with num_leaves = 64 and min_data_in_leaf = 400\n",
      "best l2 loss 4.420022 at iteration 20 with num_leaves = 64 and min_data_in_leaf = 500\n",
      "best l2 loss 4.587466 at iteration 23 with num_leaves = 64 and min_data_in_leaf = 1000\n",
      "best l2 loss 4.262714 at iteration 20 with num_leaves = 128 and min_data_in_leaf = 20\n",
      "best l2 loss 4.435904 at iteration 16 with num_leaves = 128 and min_data_in_leaf = 50\n",
      "best l2 loss 4.397853 at iteration 17 with num_leaves = 128 and min_data_in_leaf = 100\n",
      "best l2 loss 4.366349 at iteration 20 with num_leaves = 128 and min_data_in_leaf = 200\n",
      "best l2 loss 4.356635 at iteration 19 with num_leaves = 128 and min_data_in_leaf = 300\n",
      "best l2 loss 4.408868 at iteration 19 with num_leaves = 128 and min_data_in_leaf = 400\n",
      "best l2 loss 4.456862 at iteration 18 with num_leaves = 128 and min_data_in_leaf = 500\n",
      "best l2 loss 4.569433 at iteration 18 with num_leaves = 128 and min_data_in_leaf = 1000\n",
      "best l2 loss 4.282731 at iteration 19 with num_leaves = 256 and min_data_in_leaf = 20\n",
      "best l2 loss 4.429628 at iteration 16 with num_leaves = 256 and min_data_in_leaf = 50\n",
      "best l2 loss 4.357898 at iteration 18 with num_leaves = 256 and min_data_in_leaf = 100\n",
      "best l2 loss 4.362884 at iteration 24 with num_leaves = 256 and min_data_in_leaf = 200\n",
      "best l2 loss 4.345660 at iteration 20 with num_leaves = 256 and min_data_in_leaf = 300\n",
      "best l2 loss 4.454150 at iteration 21 with num_leaves = 256 and min_data_in_leaf = 400\n",
      "best l2 loss 4.468542 at iteration 20 with num_leaves = 256 and min_data_in_leaf = 500\n",
      "best l2 loss 4.543878 at iteration 18 with num_leaves = 256 and min_data_in_leaf = 1000\n"
     ]
    }
   ],
   "source": [
    "num_leaves_options = [4, 8, 16, 32, 64, 128, 256]\n",
    "min_data_in_leaf_options = [20, 50, 100, 200, 300, 400, 500, 1000]\n",
    "for num_leaves in num_leaves_options:\n",
    "    for min_data_in_leaf in min_data_in_leaf_options:\n",
    "        try_params = params.copy()\n",
    "        try_params.update({'num_leaves': num_leaves, 'min_data_in_leaf': min_data_in_leaf})\n",
    "        l2, best_iteration = get_eval_result(try_params)\n",
    "        print(\"best l2 loss %.6f at iteration %d with num_leaves = %d and min_data_in_leaf = %d\" % \n",
    "              (l2, best_iteration, num_leaves, min_data_in_leaf))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们发现，num_leaves=8并且min_data_in_leaf=20的时候结果是最好的。接下来我们调整学习率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "best l2 loss 3.933602 at iteration 224 with learning_rate = 0.010000\n",
      "best l2 loss 3.931762 at iteration 114 with learning_rate = 0.020000\n",
      "best l2 loss 3.938628 at iteration 72 with learning_rate = 0.030000\n",
      "best l2 loss 3.959307 at iteration 41 with learning_rate = 0.050000\n",
      "best l2 loss 3.974465 at iteration 21 with learning_rate = 0.100000\n"
     ]
    }
   ],
   "source": [
    "params.update({'num_leaves': 8, 'min_data_in_leaf':20})\n",
    "learning_rate_options = [0.01, 0.02, 0.03, 0.05, 0.1]\n",
    "for learning_rate in learning_rate_options:\n",
    "    try_params = params.copy()\n",
    "    try_params.update({'learning_rate': learning_rate})\n",
    "    l2, best_iteration = get_eval_result(try_params)\n",
    "    print(\"best l2 loss %.6f at iteration %d with learning_rate = %f\" % (l2, best_iteration, learning_rate))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可见learning_rate=0.02且迭代次数为114是最好的。我们使用搜索出的最优超参，在全部训练集上进行训练，并观察测试集的结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.225438548912187"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "params.update({'learning_rate':0.02, 'num_trees':114})\n",
    "model = lgb.train(params=params,\n",
    "                      train_set=train_set)\n",
    "score = model.predict(test_data)\n",
    "l2_loss = np.mean((score - test_label) ** 2)\n",
    "l2_loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "得到最终测试集上l2损失函数值为4.22544，这比一开始默认参数取得的结果5.27666有了不少的提高。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 模型解释"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在训练得到GBDT模型之后，可以对模型进行解释分析，从而了解特征对模型预测所起的作用。这里主要介绍两种解释工具，分别是特征重要性以及SHAP值。此外，LightGBM还提供了模型可视化接口，用户可以方便地查看每个决策树的结构。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 特征重要性"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "特征重要性描述每个特征在GBDT模型中的整体贡献。常用的特征重要性计算方法有：\n",
    "1. 计算特征在切分条件当中使用的次数。\n",
    "2. 计算使用该特征所有切分的增益之和。\n",
    "\n",
    "二者在LightGBM中都可以通过直接调用模型的feature_importance方法获得。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "def print_feature_importance(importance_type):\n",
    "    feature_importance_count = model.feature_importance(importance_type=importance_type)\n",
    "    feature_names = train_data.columns\n",
    "    argsort = np.argsort(feature_importance_count)\n",
    "    for idx in argsort[::-1]:\n",
    "        print(\"feature %s with %s %f\" % (feature_names[idx], importance_type, feature_importance_count[idx]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "按照第1种方法，即特征使用次数（指定importance_type为split）计算特征重要性，并将特征按照重要性排序。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "pycharm": {
     "is_executing": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "feature la_42 with split 120.000000\n",
      "feature p_8 with split 115.000000\n",
      "feature p_1 with split 82.000000\n",
      "feature p_5 with split 82.000000\n",
      "feature la_28 with split 67.000000\n",
      "feature la_56 with split 62.000000\n",
      "feature la_21 with split 51.000000\n",
      "feature la_1 with split 44.000000\n",
      "feature p_4 with split 36.000000\n",
      "feature p_6 with split 34.000000\n",
      "feature p_2 with split 26.000000\n",
      "feature snap_mean with split 26.000000\n",
      "feature p_7 with split 21.000000\n",
      "feature la_14 with split 15.000000\n",
      "feature p_3 with split 14.000000\n",
      "feature la_7 with split 2.000000\n",
      "feature la_2 with split 1.000000\n",
      "feature event_type_2_mean with split 0.000000\n",
      "feature same_month_mean with split 0.000000\n",
      "feature event_name_1_mean with split 0.000000\n",
      "feature event_name_2_mean with split 0.000000\n",
      "feature la_6 with split 0.000000\n",
      "feature la_5 with split 0.000000\n",
      "feature la_4 with split 0.000000\n",
      "feature la_3 with split 0.000000\n",
      "feature event_type_1_mean with split 0.000000\n"
     ]
    }
   ],
   "source": [
    "print_feature_importance(\"split\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "按照第2种方式，即特征带来的切分增益之和（指定importance_type为gain）计算特征重要性，并将特征按照重要性排序。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "pycharm": {
     "is_executing": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "feature la_42 with gain 115750132.190430\n",
      "feature la_56 with gain 84476708.498047\n",
      "feature p_5 with gain 31033226.599609\n",
      "feature la_28 with gain 27731372.906250\n",
      "feature p_8 with gain 21166530.315430\n",
      "feature p_4 with gain 15516459.207031\n",
      "feature p_6 with gain 11646842.912109\n",
      "feature p_1 with gain 10153382.997070\n",
      "feature p_7 with gain 10071173.701172\n",
      "feature la_21 with gain 6105789.902344\n",
      "feature p_2 with gain 4244621.695312\n",
      "feature p_3 with gain 3106698.300781\n",
      "feature la_1 with gain 1113203.497070\n",
      "feature snap_mean with gain 837001.503906\n",
      "feature la_14 with gain 531382.998047\n",
      "feature la_7 with gain 48103.900391\n",
      "feature la_2 with gain 17853.400391\n",
      "feature event_type_2_mean with gain 0.000000\n",
      "feature same_month_mean with gain 0.000000\n",
      "feature event_name_1_mean with gain 0.000000\n",
      "feature event_name_2_mean with gain 0.000000\n",
      "feature event_type_1_mean with gain 0.000000\n",
      "feature la_6 with gain 0.000000\n",
      "feature la_5 with gain 0.000000\n",
      "feature la_4 with gain 0.000000\n",
      "feature la_3 with gain 0.000000\n"
     ]
    }
   ],
   "source": [
    "print_feature_importance(\"gain\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从以上的排序中可以发现，排名最靠前的是以la和p开头的延迟特征。有趣的是，最重要的延迟特征是使用较长历史数据的la_56、la_42、la_28、p_8等等。而使用短期历史数据的la_3、la_5等排名比较靠后。这可能是因为长期的累计销量比起短期的累计销量更加稳定，更能够反应商品的真实需求量。相反，使用很短的历史数据进行统计得到的结果具有更大的随机性。\n",
    "\n",
    "同时，基于特殊事件的特征完全没有被使用到。\n",
    "\n",
    "特征重要性的分析不仅帮助我们理解哪些因素是模型预测的重要根据，更可以帮助对特征工程进行反思，启发我们构造出更多可能有用的特征，并去掉没有帮助的特征。例如，以上结果提示我们，构造更多长期的累计销量特征有可能进一步提高模型效果。因此，特征工程——调参和训练——模型解释，这一过程实际上可以构成闭环，不断地迭代优化。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### SHAP值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "另一个重要的解释工具是SHAP值。它反映了每个特征对每个样本预测值的贡献。LightGBM也提供了SHAP值计算的功能，只需要在调用预测接口predict的时候指定pred_contrib=True即可。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>la_1</th>\n",
       "      <th>la_2</th>\n",
       "      <th>la_3</th>\n",
       "      <th>la_4</th>\n",
       "      <th>la_5</th>\n",
       "      <th>la_6</th>\n",
       "      <th>la_7</th>\n",
       "      <th>la_14</th>\n",
       "      <th>la_21</th>\n",
       "      <th>la_28</th>\n",
       "      <th>la_42</th>\n",
       "      <th>la_56</th>\n",
       "      <th>p_1</th>\n",
       "      <th>p_2</th>\n",
       "      <th>p_3</th>\n",
       "      <th>p_4</th>\n",
       "      <th>p_5</th>\n",
       "      <th>p_6</th>\n",
       "      <th>p_7</th>\n",
       "      <th>p_8</th>\n",
       "      <th>same_month_mean</th>\n",
       "      <th>event_name_1_mean</th>\n",
       "      <th>event_name_2_mean</th>\n",
       "      <th>event_type_1_mean</th>\n",
       "      <th>event_type_2_mean</th>\n",
       "      <th>snap_mean</th>\n",
       "      <th>expectation</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.096252</td>\n",
       "      <td>-0.000018</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.002893</td>\n",
       "      <td>0.004732</td>\n",
       "      <td>0.015847</td>\n",
       "      <td>-0.098856</td>\n",
       "      <td>-0.298922</td>\n",
       "      <td>-0.113676</td>\n",
       "      <td>-0.021341</td>\n",
       "      <td>-0.019988</td>\n",
       "      <td>-0.011857</td>\n",
       "      <td>-0.018427</td>\n",
       "      <td>-0.033439</td>\n",
       "      <td>-0.010466</td>\n",
       "      <td>-0.007798</td>\n",
       "      <td>-0.036077</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.002988</td>\n",
       "      <td>1.386903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.096243</td>\n",
       "      <td>-0.000007</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.007053</td>\n",
       "      <td>-0.043878</td>\n",
       "      <td>-0.055069</td>\n",
       "      <td>-0.122065</td>\n",
       "      <td>-0.418101</td>\n",
       "      <td>-0.137268</td>\n",
       "      <td>-0.022044</td>\n",
       "      <td>-0.021792</td>\n",
       "      <td>-0.012613</td>\n",
       "      <td>-0.019326</td>\n",
       "      <td>-0.033994</td>\n",
       "      <td>-0.010522</td>\n",
       "      <td>-0.008871</td>\n",
       "      <td>-0.038772</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.002255</td>\n",
       "      <td>1.386903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.096243</td>\n",
       "      <td>-0.000018</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.007053</td>\n",
       "      <td>0.011236</td>\n",
       "      <td>-0.034825</td>\n",
       "      <td>-0.118481</td>\n",
       "      <td>-0.418101</td>\n",
       "      <td>-0.137268</td>\n",
       "      <td>-0.021947</td>\n",
       "      <td>-0.019660</td>\n",
       "      <td>-0.012613</td>\n",
       "      <td>-0.019326</td>\n",
       "      <td>-0.033994</td>\n",
       "      <td>-0.010522</td>\n",
       "      <td>-0.008871</td>\n",
       "      <td>-0.038772</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.002255</td>\n",
       "      <td>1.386903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.164029</td>\n",
       "      <td>-0.000018</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.004983</td>\n",
       "      <td>0.022539</td>\n",
       "      <td>0.031736</td>\n",
       "      <td>-0.023178</td>\n",
       "      <td>0.119708</td>\n",
       "      <td>-0.095475</td>\n",
       "      <td>-0.020722</td>\n",
       "      <td>0.007415</td>\n",
       "      <td>-0.003725</td>\n",
       "      <td>-0.009705</td>\n",
       "      <td>-0.030853</td>\n",
       "      <td>-0.009752</td>\n",
       "      <td>-0.007798</td>\n",
       "      <td>0.040343</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.009147</td>\n",
       "      <td>1.386903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.022764</td>\n",
       "      <td>-0.000018</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.002893</td>\n",
       "      <td>0.024456</td>\n",
       "      <td>0.003448</td>\n",
       "      <td>-0.047541</td>\n",
       "      <td>-0.215728</td>\n",
       "      <td>-0.098155</td>\n",
       "      <td>-0.020919</td>\n",
       "      <td>-0.020979</td>\n",
       "      <td>-0.011857</td>\n",
       "      <td>-0.018324</td>\n",
       "      <td>-0.036087</td>\n",
       "      <td>-0.010362</td>\n",
       "      <td>-0.007798</td>\n",
       "      <td>-0.006639</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.003067</td>\n",
       "      <td>1.386903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30485</th>\n",
       "      <td>-0.096243</td>\n",
       "      <td>-0.000007</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.007053</td>\n",
       "      <td>-0.043878</td>\n",
       "      <td>-0.055069</td>\n",
       "      <td>-0.122065</td>\n",
       "      <td>-0.418101</td>\n",
       "      <td>-0.137268</td>\n",
       "      <td>-0.022044</td>\n",
       "      <td>-0.021792</td>\n",
       "      <td>-0.012613</td>\n",
       "      <td>-0.019326</td>\n",
       "      <td>-0.033994</td>\n",
       "      <td>-0.010522</td>\n",
       "      <td>-0.008871</td>\n",
       "      <td>-0.038772</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.002255</td>\n",
       "      <td>1.386903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30486</th>\n",
       "      <td>-0.096243</td>\n",
       "      <td>-0.000007</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.007053</td>\n",
       "      <td>-0.043878</td>\n",
       "      <td>-0.055069</td>\n",
       "      <td>-0.122065</td>\n",
       "      <td>-0.418101</td>\n",
       "      <td>-0.137268</td>\n",
       "      <td>-0.022044</td>\n",
       "      <td>-0.021792</td>\n",
       "      <td>-0.012613</td>\n",
       "      <td>-0.019326</td>\n",
       "      <td>-0.033994</td>\n",
       "      <td>-0.010522</td>\n",
       "      <td>-0.008871</td>\n",
       "      <td>-0.038772</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.002255</td>\n",
       "      <td>1.386903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30487</th>\n",
       "      <td>-0.145952</td>\n",
       "      <td>-0.000018</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.007053</td>\n",
       "      <td>-0.009387</td>\n",
       "      <td>0.006524</td>\n",
       "      <td>-0.107395</td>\n",
       "      <td>-0.352248</td>\n",
       "      <td>-0.115530</td>\n",
       "      <td>-0.021686</td>\n",
       "      <td>0.008284</td>\n",
       "      <td>-0.004053</td>\n",
       "      <td>-0.010221</td>\n",
       "      <td>-0.032319</td>\n",
       "      <td>-0.010466</td>\n",
       "      <td>-0.008421</td>\n",
       "      <td>0.037261</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.001863</td>\n",
       "      <td>1.386903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30488</th>\n",
       "      <td>-0.031551</td>\n",
       "      <td>-0.000018</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.002893</td>\n",
       "      <td>0.004732</td>\n",
       "      <td>-0.005771</td>\n",
       "      <td>-0.098450</td>\n",
       "      <td>-0.298922</td>\n",
       "      <td>-0.113676</td>\n",
       "      <td>-0.020953</td>\n",
       "      <td>-0.021859</td>\n",
       "      <td>-0.011857</td>\n",
       "      <td>-0.018840</td>\n",
       "      <td>-0.037012</td>\n",
       "      <td>-0.010466</td>\n",
       "      <td>-0.007798</td>\n",
       "      <td>-0.044795</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.003067</td>\n",
       "      <td>1.386903</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30489</th>\n",
       "      <td>-0.137429</td>\n",
       "      <td>-0.000007</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.007053</td>\n",
       "      <td>-0.043659</td>\n",
       "      <td>-0.054887</td>\n",
       "      <td>-0.089457</td>\n",
       "      <td>-0.165400</td>\n",
       "      <td>-0.098773</td>\n",
       "      <td>-0.021770</td>\n",
       "      <td>-0.021792</td>\n",
       "      <td>-0.012262</td>\n",
       "      <td>-0.010522</td>\n",
       "      <td>-0.031691</td>\n",
       "      <td>-0.009912</td>\n",
       "      <td>-0.007798</td>\n",
       "      <td>0.044522</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.001863</td>\n",
       "      <td>1.386903</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>30490 rows × 27 columns</p>\n",
       ""
      ],
      "text/plain": [
       "           la_1      la_2  la_3  la_4  la_5  la_6      la_7     la_14  \\\n",
       "0     -0.096252 -0.000018   0.0   0.0   0.0   0.0  0.002893  0.004732   \n",
       "1     -0.096243 -0.000007   0.0   0.0   0.0   0.0 -0.007053 -0.043878   \n",
       "2     -0.096243 -0.000018   0.0   0.0   0.0   0.0 -0.007053  0.011236   \n",
       "3     -0.164029 -0.000018   0.0   0.0   0.0   0.0  0.004983  0.022539   \n",
       "4     -0.022764 -0.000018   0.0   0.0   0.0   0.0  0.002893  0.024456   \n",
       "...         ...       ...   ...   ...   ...   ...       ...       ...   \n",
       "30485 -0.096243 -0.000007   0.0   0.0   0.0   0.0 -0.007053 -0.043878   \n",
       "30486 -0.096243 -0.000007   0.0   0.0   0.0   0.0 -0.007053 -0.043878   \n",
       "30487 -0.145952 -0.000018   0.0   0.0   0.0   0.0 -0.007053 -0.009387   \n",
       "30488 -0.031551 -0.000018   0.0   0.0   0.0   0.0  0.002893  0.004732   \n",
       "30489 -0.137429 -0.000007   0.0   0.0   0.0   0.0 -0.007053 -0.043659   \n",
       "\n",
       "          la_21     la_28     la_42     la_56       p_1       p_2       p_3  \\\n",
       "0      0.015847 -0.098856 -0.298922 -0.113676 -0.021341 -0.019988 -0.011857   \n",
       "1     -0.055069 -0.122065 -0.418101 -0.137268 -0.022044 -0.021792 -0.012613   \n",
       "2     -0.034825 -0.118481 -0.418101 -0.137268 -0.021947 -0.019660 -0.012613   \n",
       "3      0.031736 -0.023178  0.119708 -0.095475 -0.020722  0.007415 -0.003725   \n",
       "4      0.003448 -0.047541 -0.215728 -0.098155 -0.020919 -0.020979 -0.011857   \n",
       "...         ...       ...       ...       ...       ...       ...       ...   \n",
       "30485 -0.055069 -0.122065 -0.418101 -0.137268 -0.022044 -0.021792 -0.012613   \n",
       "30486 -0.055069 -0.122065 -0.418101 -0.137268 -0.022044 -0.021792 -0.012613   \n",
       "30487  0.006524 -0.107395 -0.352248 -0.115530 -0.021686  0.008284 -0.004053   \n",
       "30488 -0.005771 -0.098450 -0.298922 -0.113676 -0.020953 -0.021859 -0.011857   \n",
       "30489 -0.054887 -0.089457 -0.165400 -0.098773 -0.021770 -0.021792 -0.012262   \n",
       "\n",
       "            p_4       p_5       p_6       p_7       p_8  same_month_mean  \\\n",
       "0     -0.018427 -0.033439 -0.010466 -0.007798 -0.036077              0.0   \n",
       "1     -0.019326 -0.033994 -0.010522 -0.008871 -0.038772              0.0   \n",
       "2     -0.019326 -0.033994 -0.010522 -0.008871 -0.038772              0.0   \n",
       "3     -0.009705 -0.030853 -0.009752 -0.007798  0.040343              0.0   \n",
       "4     -0.018324 -0.036087 -0.010362 -0.007798 -0.006639              0.0   \n",
       "...         ...       ...       ...       ...       ...              ...   \n",
       "30485 -0.019326 -0.033994 -0.010522 -0.008871 -0.038772              0.0   \n",
       "30486 -0.019326 -0.033994 -0.010522 -0.008871 -0.038772              0.0   \n",
       "30487 -0.010221 -0.032319 -0.010466 -0.008421  0.037261              0.0   \n",
       "30488 -0.018840 -0.037012 -0.010466 -0.007798 -0.044795              0.0   \n",
       "30489 -0.010522 -0.031691 -0.009912 -0.007798  0.044522              0.0   \n",
       "\n",
       "       event_name_1_mean  event_name_2_mean  event_type_1_mean  \\\n",
       "0                    0.0                0.0                0.0   \n",
       "1                    0.0                0.0                0.0   \n",
       "2                    0.0                0.0                0.0   \n",
       "3                    0.0                0.0                0.0   \n",
       "4                    0.0                0.0                0.0   \n",
       "...                  ...                ...                ...   \n",
       "30485                0.0                0.0                0.0   \n",
       "30486                0.0                0.0                0.0   \n",
       "30487                0.0                0.0                0.0   \n",
       "30488                0.0                0.0                0.0   \n",
       "30489                0.0                0.0                0.0   \n",
       "\n",
       "       event_type_2_mean  snap_mean  expectation  \n",
       "0                    0.0  -0.002988     1.386903  \n",
       "1                    0.0  -0.002255     1.386903  \n",
       "2                    0.0  -0.002255     1.386903  \n",
       "3                    0.0   0.009147     1.386903  \n",
       "4                    0.0  -0.003067     1.386903  \n",
       "...                  ...        ...          ...  \n",
       "30485                0.0  -0.002255     1.386903  \n",
       "30486                0.0  -0.002255     1.386903  \n",
       "30487                0.0  -0.001863     1.386903  \n",
       "30488                0.0  -0.003067     1.386903  \n",
       "30489                0.0  -0.001863     1.386903  \n",
       "\n",
       "[30490 rows x 27 columns]"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shap_values = model.predict(test_data, pred_contrib=True)\n",
    "shap = pd.DataFrame(data=shap_values, columns=list(test_data.columns.values) + [\"expectation\"])\n",
    "pd.set_option('display.max_columns', None)\n",
    "shap"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "其中最后一列expectation是训练数据标签的均值。上表中每一行的数值之和等于模型对改行数据的预测值。可以发现la_28、la_42、la_56这几列SHAP值的绝对值比较大，这与特征重要性中的观察一致。\n",
    "SHAP值的具体定义比较复杂，这里进行介绍，有兴趣的读者可以参考推荐阅读材料中的决策树模型SHAP值的计算方法的相关论文。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 模型可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用LightGBM的plot_tree函数可以方便地画出模型中指定决策树的完整结构，包括中间节点上的决策条件和叶子节点的预测值。例如，下面我们画出第一棵树的结构。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg height=\"286.2pt\" version=\"1.1\" viewBox=\"0 0 495.7125 286.2\" width=\"495.7125pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2021-06-02T06:32:24.420802</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.4.2, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 286.2 \nL 495.7125 286.2 \nL 495.7125 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g clip-path=\"url(#p44e5386996)\">\n    <image height=\"272\" id=\"image572834fd48\" transform=\"scale(1 -1)translate(0 -272)\" width=\"482\" x=\"7.2\" xlink:href=\"data:image/png;base64,\n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\" y=\"-7\"/>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"p44e5386996\">\n   <rect height=\"271.8\" width=\"481.3125\" x=\"7.2\" y=\"7.2\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "lgb.plot_tree(model, tree_index=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以清晰地看到决策树的决策过程。在上图中，从中间节点的判断条件可知，下方的叶子节点包含的商品历史销量更大；而上方的叶子节点中的商品历史销量更小。可以看到，对于历史销量大的商品，决策树倾向于给出更大的销量预测值（如最下方的叶子的3.907）。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### LightGBM的特性使用"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以上是LightGBM使用的基本流程。上述过程默认使用了LightGBM的一些特性，包括按叶子分割的决策树训练和直方图加速优化。这一小节将回过头来考察这些特性对模型的训练究竟造成了什么样的影响。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 决策树的生长方式"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先是按叶子分割的决策树训练。回顾在超参调优的过程中，在决策树的规模限制上，只用到了叶子的数量$num\\_leaves$。这是因为LightGBM默认决策树都是按叶子分割进行训练的。当然，LightGBM也提供了对决策树最大深度的限制，由超参数$max\\_depth$控制。如果设置$num\\_leaves$的值为$2^{max\\_depth}$，则决策树等价于按层分割的训练，得到的是一个深度为$max\\_depth$的完全二叉树。在本案例中，训练样本量较多，因此使用较为灵活的按叶子分割应该得到更好的结果。我们对这一猜测进行验证。\n",
    "\n",
    "选取使用nni自动搜参得到的最优超参数，在这组超参数中，$num\\_leaves$取值为8，因此加上$max\\_depth=3$，就可以让决策树都变成深度为3的完全二叉树。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "params_with_max_depth = {\n",
    "    \"num_leaves\":8,\n",
    "    \"learning_rate\":0.044462958967770576,\n",
    "    \"min_data_in_leaf\":16,\n",
    "    \"lambda_l2\":0.06611960419049324,\n",
    "    \"feature_fraction\":0.6830879424448291,\n",
    "    \"bagging_fraction\":0.7527564678754335,\n",
    "    \"objective\": \"regression\",\n",
    "    \"bagging_freq\": 1,\n",
    "    \"max_depth\": 3\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用相同的迭代轮数重新训练，并观察结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda/envs/lgbm/lib/python3.9/site-packages/lightgbm/engine.py:151: UserWarning: Found `num_trees` in params. Will use it instead of argument\n",
      "  warnings.warn(\"Found `{}` in params. Will use it instead of argument\".format(alias))\n",
      "[LightGBM] [Warning] Auto-choosing row-wise multi-threading, the overhead of testing was 0.038411 seconds.\n",
      "You can set `force_row_wise=true` to remove the overhead.\n",
      "And if memory is not enough, you can set `force_col_wise=true`.\n",
      "[LightGBM] [Info] Total Bins 5362\n",
      "[LightGBM] [Info] Number of data points in the train set: 1524500, number of used features: 26\n",
      "[LightGBM] [Info] Start training from score 1.386903\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "4.143701924725372"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "params_with_max_depth.update({\"num_trees\": 53})\n",
    "model = lgb.train(params=params_with_max_depth,\n",
    "                  train_set=train_set)\n",
    "score = model.predict(test_data)\n",
    "l2_loss = np.mean((score - test_label) ** 2)\n",
    "l2_loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "得到验证集上的结果为4.196662，比使用按叶子分割的4.186709差了一些。这说明按叶子分割的训练方式确实学习到了比按层分割更加灵活的决策树结构。当然，由于更换了决策树的生长方式，其他超参数可能也需要进行调整才能得到按层生长的最优结果。不过鉴于本案例中的训练数据充足，一般来说按叶子分割是更好的选择。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 直方图带来的加速效果"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "LightGBM使用直方图优化进行训练，超参数$max\\_bin$指定了直方图的区间数量。前面的流程中始终将这个超参数保留为默认值$max\\_bin=255$。这里我们调整$max\\_bin$，依次尝试$[16, 64, 256, 512, 1024, 2048, 4096, 9192, 18384, 36768, 75536, 151072]$并观察$max\\_bin$对训练速度和准确率会造成什么样的影响。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "params_with_max_bin = {\n",
    "    \"num_leaves\":8,\n",
    "    \"learning_rate\":0.044462958967770576,\n",
    "    \"min_data_in_leaf\":16,\n",
    "    \"lambda_l2\":0.06611960419049324,\n",
    "    \"feature_fraction\":0.6830879424448291,\n",
    "    \"bagging_fraction\":0.7527564678754335,\n",
    "    \"objective\": \"regression\",\n",
    "    \"bagging_freq\": 1\n",
    "}\n",
    "params_with_max_bin.update({\"num_trees\": 53})\n",
    "params_with_max_bin.update({\"verbose\": -1})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "with max_bin 16, training time 2.506295680999756 seconds, l2_loss 5.045216\n",
      "with max_bin 64, training time 2.38858699798584 seconds, l2_loss 4.126299\n",
      "with max_bin 256, training time 2.5584359169006348 seconds, l2_loss 4.183943\n",
      "with max_bin 512, training time 2.5151989459991455 seconds, l2_loss 4.171627\n",
      "with max_bin 1024, training time 2.5459041595458984 seconds, l2_loss 4.176913\n",
      "with max_bin 2048, training time 2.560281753540039 seconds, l2_loss 4.173533\n",
      "with max_bin 4096, training time 2.718515396118164 seconds, l2_loss 4.169061\n",
      "with max_bin 9192, training time 2.605896472930908 seconds, l2_loss 4.172087\n",
      "with max_bin 18384, training time 2.6336991786956787 seconds, l2_loss 4.165019\n",
      "with max_bin 36768, training time 2.8722853660583496 seconds, l2_loss 4.164789\n",
      "with max_bin 75536, training time 3.097911834716797 seconds, l2_loss 4.163614\n",
      "with max_bin 151072, training time 2.7406954765319824 seconds, l2_loss 4.163613\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "\n",
    "for max_bin in [16, 64, 256, 512, 1024, 2048, 4096, 9192, 18384, 36768, 75536, 151072]:\n",
    "    params_with_max_bin.update({\"max_bin\": max_bin})\n",
    "\n",
    "    #注意，更换不同的max_bin需要重新构造LightGBM的训练数据才能生效\n",
    "    train_set = lgb.Dataset(train_data, label=train_label)\n",
    "    test_set = lgb.Dataset(test_data, label=test_label, reference=train_set)\n",
    "\n",
    "    time_start = time.time()\n",
    "    model = lgb.train(params=params_with_max_bin,\n",
    "                  train_set=train_set)\n",
    "    time_end = time.time()\n",
    "    score = model.predict(test_data)\n",
    "    l2_loss = np.mean((score - test_label) ** 2)\n",
    "    print(\"with max_bin %d, training time %s seconds, l2_loss %f\" % (max_bin, (time_end - time_start), l2_loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到$max\\_bin$增大到一定值以后，训练时间明显变慢，并且也未必能带来准确率上的优势。在以上结果中，测试集上损失函数最低的是使用$max\\_bin=64$。除了$max\\_bin=16$以外，其他结果的损失函数值没有太大差别，说明准确率对$max\\_bin$并不是很敏感。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 梯度单边采样(GOSS)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以上过程使用的采样策略为默认的随机等概率采样，即每个决策树随机等概率采样$bagging\\_fraction$指定的样本比例。在背景介绍中，我们提到了LightGBM实现了一种更高效的采样方法GOSS，它基于梯度对样本进行采样，从而减少采样带来的准确率损失。GOSS的采样率由两个超参数决定，其中$top\\_rate$指定了梯度最大的被保留的样本比例（对应背景介绍部分的$a$），$other\\_rate$指定了剩余样本中随机等概率采样的比例（对应背景介绍部分的$b$）。为了比较GOSS和随机等概率采样的效果，将自动搜参得到的最优参数中的$bagging\\_fraction$替换为两个$top\\_rate$和$other\\_rate$的值，并使得$top\\_rate+other\\_rate=bagging\\_fraction$，并设置$boosting\\_type$为$goss$（默认的$boosting\\_type$为$gbdt$）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "bagging_fraction = 0.7527564678754335\n",
    "params_with_goss = {\n",
    "    \"top_rate\": 0.3,\n",
    "    \"other_rate\": bagging_fraction - 0.3,\n",
    "    \"boosting_type\": \"goss\",\n",
    "    \"num_leaves\":8,\n",
    "    \"learning_rate\":0.044462958967770576,\n",
    "    \"min_data_in_leaf\":16,\n",
    "    \"lambda_l2\":0.06611960419049324,\n",
    "    \"feature_fraction\":0.6830879424448291,\n",
    "    \"objective\": \"regression\"\n",
    "}\n",
    "params_with_goss.update({\"num_trees\": 53})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[LightGBM] [Warning] Auto-choosing col-wise multi-threading, the overhead of testing was 0.080294 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 5358\n",
      "[LightGBM] [Info] Number of data points in the train set: 1524500, number of used features: 24\n",
      "[LightGBM] [Info] Using GOSS\n",
      "[LightGBM] [Info] Start training from score 1.386903\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "4.1686802849049185"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set = lgb.Dataset(train_data, label=train_label)\n",
    "test_set = lgb.Dataset(test_data, label=test_label, reference=train_set)\n",
    "model = lgb.train(params=params_with_goss,\n",
    "                  train_set=train_set)\n",
    "score = model.predict(test_data)\n",
    "l2_loss = np.mean((score - test_label) ** 2)\n",
    "l2_loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上面我们随机选取了top_rate=0.3，使用GOSS的结果略好于同采样比例的等概率随机采样(4.186709)。尝试不同的top_rate，可发现GOSS一致地好于普通的等概率随机采样。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "l2_loss with top rate 0.100000 = 4.162216\n",
      "l2_loss with top rate 0.200000 = 4.145472\n",
      "l2_loss with top rate 0.300000 = 4.168680\n",
      "l2_loss with top rate 0.400000 = 4.174883\n",
      "l2_loss with top rate 0.500000 = 4.197601\n",
      "l2_loss with top rate 0.600000 = 4.183351\n"
     ]
    }
   ],
   "source": [
    "for top_rate in [0.1, 0.2, 0.3, 0.4, 0.5, 0.6]:\n",
    "    bagging_fraction = 0.7527564678754335\n",
    "    params_with_goss = {\n",
    "        \"top_rate\": top_rate,\n",
    "        \"other_rate\": bagging_fraction - top_rate,\n",
    "        \"boosting_type\": \"goss\",\n",
    "        \"num_leaves\":8,\n",
    "        \"learning_rate\":0.044462958967770576,\n",
    "        \"min_data_in_leaf\":16,\n",
    "        \"lambda_l2\":0.06611960419049324,\n",
    "        \"feature_fraction\":0.6830879424448291,\n",
    "        \"objective\": \"regression\"\n",
    "    }\n",
    "    params_with_goss.update({\"num_trees\": 53, \"verbose\":-1})\n",
    "    train_set = lgb.Dataset(train_data, label=train_label)\n",
    "    test_set = lgb.Dataset(test_data, label=test_label, reference=train_set)\n",
    "    model = lgb.train(params=params_with_goss,\n",
    "                      train_set=train_set)\n",
    "    score = model.predict(test_data)\n",
    "    l2_loss = np.mean((score - test_label) ** 2)\n",
    "    print(\"l2_loss with top rate %f = %f\" % (top_rate, l2_loss))"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "756616cb66d337765b1cbf6ea75509eb8493690e016eea774cbc7b1bea874a0d"
  },
  "kernelspec": {
   "display_name": "Python 3.9.4 64-bit",
   "name": "python3"
  },
  "language_info": {
   "name": "python",
   "version": ""
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}